![sed 仅替换具有匹配组的行](https://linux22.com/image/52292/sed%20%E4%BB%85%E6%9B%BF%E6%8D%A2%E5%85%B7%E6%9C%89%E5%8C%B9%E9%85%8D%E7%BB%84%E7%9A%84%E8%A1%8C.png)
目前,我有这个命令:
sed 's/\([^C]*\)/\1AB/'
它在一行中第一个“C”实例之前插入“AB”。但它也在每行末尾添加“AB”,而不添加“C”。
我怎样才能让它只在找到“C”时进行编辑?
答案1
简单地替换有什么问题吗C
?
sed 's/C/ABC/'
这只会替换第一个实例(如果您想替换所有实例,您可以g
在末尾添加)。
答案2
您需要一个地址过滤器:
sed '/C/s/\([^C]*\)/\1AB/'
目前,我有这个命令:
sed 's/\([^C]*\)/\1AB/'
它在一行中第一个“C”实例之前插入“AB”。但它也在每行末尾添加“AB”,而不添加“C”。
我怎样才能让它只在找到“C”时进行编辑?
简单地替换有什么问题吗C
?
sed 's/C/ABC/'
这只会替换第一个实例(如果您想替换所有实例,您可以g
在末尾添加)。
您需要一个地址过滤器:
sed '/C/s/\([^C]*\)/\1AB/'