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}输入文件