Unix 用条件替换字符串
我有一个文件包含几行,每行的格式如下Unix 用条件替换字符串,unix,sed,Unix,Sed,我有一个文件包含几行,每行的格式如下 2011-07-10 condition hhh aaa: value bbb 2011-07-10 condition ccc aaa: value bbb 我想使用sed查找介于“aaa:”和“bbb”之间的值字符串,并根据以下字符串条件为ccc的条件替换为“gotit”。在sed之后,这个文件变成 2011-07-10 condition hhh aaa: value bbb 2011-07-10 condition ccc aaa: got
2011-07-10 condition hhh aaa: value bbb
2011-07-10 condition ccc aaa: value bbb
我想使用sed查找介于“aaa:”和“bbb”之间的值字符串,并根据以下字符串条件为ccc的条件替换为“gotit”。在sed之后,这个文件变成
2011-07-10 condition hhh aaa: value bbb
2011-07-10 condition ccc aaa: gotit bbb
鉴于我对sed/regex的了解有限:
sed 's/\(condition ccc.*aaa: \).*\( bbb$\)/\1gotit\2/' file
更合乎逻辑的是:
sed '/ccc/{ s/\(.*aaa: \).*\( bbb\)/\1gotit\2/g }' inputfile
sed
仅在包含ccc
的行上运行抱歉,我没有说清楚,在ccc和aaa之间,还有一些其他文本,它只是ccc必须出现在这行中。公平地说,请尝试以下操作:sed's/\(条件ccc.*aaa:\).\(bbb$\)/\1gott\2/'文件
抱歉劫持您的线程。如果我想搜索并替换两个字符串“ccc”和“eee”,它们是较大字符串的一部分,我该如何做<代码>sed'/ccc*\\124; eee*/{s/\(.*aaa:\).\.(bbb\)/\1motit\2/g}输入文件