使用sed在字符串之间添加多个字符串
问题描述:
我正在玩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之间添加字符串。我试图使用正则表达式,但似乎没有工作。
答
从你的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: "사무소"}
我看..是我做了更换和模式的概念混淆。需要多练习。谢谢:) – 2013-03-20 13:33:53
@青山张欢迎您.. Bkq〜 – Kent 2013-03-20 13:34:48