我正在编写一个bash脚本,我想找到一个特定的字符串,并在第二次出现时替换整行。
例如:
# randomtext 9876
randomtext 9999
我想用“randomtext 123”替换第二次出现的“randomtext”。所以最终输出应该是这样的:
# randomtext 9876
randomtext 123
我在网上找到了一个与我想要的完全相似的解决方案,但我不确定如何使用它。
sed -i "0,/^PATTERN/ s/^PATTERN=.*$/PATTERN=XY/" test.txt
答案 0 :(得分:2)
您的要求不清楚,您的样本输入/输出没有帮助,但给出了此输入文件:
$ cat file
# randomtext 9876
foo
randomtext 9999
bar
randomtext 3
替换第二次出现的randomtext:
$ awk '{print (/randomtext/ && (++c==2) ? "randomtext 123" : $0)}' file
# randomtext 9876
foo
randomtext 123
bar
randomtext 3
替换所有未注释的randomtext事件:
$ awk '{print (/^[^#]*randomtext/ ? "randomtext 123" : $0)}' file
# randomtext 9876
foo
randomtext 123
bar
randomtext 123
替换randomtext的第一个未注释的出现:
$ awk '{print (/^[^#]*randomtext/ && (++c==1) ? "randomtext 123" : $0)}' file
# randomtext 9876
foo
randomtext 123
bar
randomtext 3