2016-02-29 77 views
1

我遇到sed实用程序的问题。我必须用一个字符串替换正则表达式,但只能在包含另一个特定字符串的行上。还有什么我必须从文件中读取,然后通过sed进行修改,而不仅仅是导出替代值。这是我曾尝试:sed与特定的字符串

sed -e '`grep aa test`"s/aa/xx/g test' 

sed -n '/aa/p' test | sed s/aa/xx/g 

grep aa test | sed 's/aa/xx/g' 
+0

任何采样数据或例如? – sat

回答

0

使用的ADRESS前s命令:

sed '/aa/ s/aa/xx/g' test 

s命令将只包含地址模式

行申请,但也没有必要有地址和s命令中的相同模式。

一个更好的例子将是:

sed '/bb/ s/aa/xx/g' test 
+0

谢谢,它的作品!我很高兴你没有写RTFM – korky

+1

虽然这是相当多余的, 's/aa/xx /'只会修改符合条件的行,并且不会修改其他行。有些情况下你需要一个地址,但这不是其中之一(当你这样做时,有一个方便的简写;替换的“from”部分中的空字符串将重用地址正则表达式;因此, AA /秒// XX /')。 – tripleee

+0

@tripleee我更新了答案。 – SLePort