2013-03-20 140 views
0

我正在玩sed來對文本進行操作。輸入是這樣的:使用sed在字符串之間添加多個字符串

가가라 a b a e 
블랙 c dd we df 
사무소 as le we 

我需要補充一些關於它的格式,所以輸出應該是:

id { id: "가가라" } value { val: "a b a e"} word { word: "가가라"} 
id { id: "블랙" } value { val: "c dd we df"} word { word: "블랙"} 
id { id: "사무소" } value { val: "as le we"} word { word: "사무소"} 

的問題是,我知道如何前後蜇傷後添加字符串:

sed 's/^/id \{ id: \"/' 

在末尾添加字符串:

在字符串的開頭添加字符串字符串:

sed 's/$/\"\} word \{ word: \"/' 

然而,當我試圖添加字符가가라在每行的結尾,這個命令我試過沒有工作:

sed -r 's/(id\s\{\sid:\s\")([^a-z]*)[\sa-z]{1,10}(\"\}\sword\s\{\sword:\s\")/\1\2\3\2/' 

而且我不知道如何在字符串가가라和aba e之間添加字符串。我試圖使用正則表達式,但似乎沒有工作。

回答

1

從你的sed行中,似乎你對匹配模式和替換感到困惑。

試試這個sed的行:

sed -r 's/(\S+)\s*(.*)/id { id: "\1" } value { val: "\2"} word { word: "\1"}/' file 

測試與您的數據:

kent$ echo "가가라 a b a e 
블랙 c dd we df 
사무소 as le we"|sed -r 's/(\S+)\s*(.*)/id { id: "\1" } value { val: "\2"} word { word: "\1"}/'        
id { id: "가가라" } value { val: "a b a e"} word { word: "가가라"} 
id { id: "블랙" } value { val: "c dd we df"} word { word: "블랙"} 
id { id: "사무소" } value { val: "as le we"} word { word: "사무소"} 
+0

我看..是我做了更換和模式的概念混淆。需要多練習。謝謝:) – 2013-03-20 13:33:53

+0

@青山張歡迎您.. Bkq〜 – Kent 2013-03-20 13:34:48

相關問題