sed 仅替换具有匹配组的行

sed 仅替换具有匹配组的行

目前,我有这个命令:

sed 's/\([^C]*\)/\1AB/'

它在一行中第一个“C”实例之前插入“AB”。但它也在每行末尾添加“AB”,而不添加“C”。

我怎样才能让它只在找到“C”时进行编辑?

答案1

简单地替换有什么问题吗C

sed 's/C/ABC/'

这只会替换第一个实例(如果您想替换所有实例,您可以g在末尾添加)。

答案2

您需要一个地址过滤器:

sed '/C/s/\([^C]*\)/\1AB/'

相关内容