sed用条件替换字符串

时间:2011-07-12 04:12:27

标签: 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: gotit bbb

2 个答案:

答案 0 :(得分:5)

鉴于我对sed / regex的了解有限:

sed 's/\(condition ccc.*aaa: \).*\( bbb$\)/\1gotit\2/' file

答案 1 :(得分:2)

更合乎逻辑:

sed '/ccc/{ s/\(.*aaa: \).*\( bbb\)/\1gotit\2/g }' inputfile

sed仅在包含ccc

的行上运行