我想在'='之后替换所有B。
echo A, B = A B B A B B B | sed 's/=\(.*\)B\(.*\)/=\1C\2/g'
预期结果应为
A, B = A C C A C C C
但我得到了这个结果:
A, B = A B B A B B C
仅替换最后匹配的模式。如何解决?
答案 0 :(得分:2)
使用此sed
:
sed ':loop; s/\(=.*\)B\(.*\)/\1C\2/; t loop'
<强>测试强>
$ echo A, B = A B B A B B B | sed ':loop; s/\(=.*\)B\(.*\)/\1C\2/; t loop'
A, B = A C C A C C C
答案 1 :(得分:0)
与@sat相同的想法,但从字符串的开头
开始sed -e ':cycle' -e 's/\(.*=.*\)B/\1C/;t cycle'
posix兼容所以应该适用于任何sed