是否可以打印由sed更改的行号和行内容?
我只需要一个简单的文本替换,不需要正则表达式:
sed -i "s:replace_me:replaced:" test.c
我需要它用于bash脚本。
提前致谢!
答案 0 :(得分:2)
你可以用几种方式摆动它:
使用文本编辑器可以交互式替换模式,编辑器会在每次替换之前提示。因此,您可以为每个案例选择y
或n
。
$ vim file
:%s/pattern/replace/gc
使用diff您可以轻松比较两个文件并查看更改:
$ sed 's/pattern/replace/g' file > tmpfile
$ diff -u file tmpfile
或
$ diff -y file tmpfile
使用man diff
玩其他很酷的可视化效果。
然后当你确定没问题时,请执行:
$ mv tmpfile file
答案 1 :(得分:0)
它是POSIX的扩展,但cat -n file.txt | ...
是添加行号的优雅解决方案。
您可以尝试使用sed
创建更新的文件,通过cat -n
运行原始和更新的文件到temp。文件,然后diff -q
后两者。
另一种方法,类似于cat -n original.txt | sed -n 's/[ 0-9]{7} .*pattern.*/replacement/gp
。您必须运行替换两次,但是当您编号和diff
'原始文件和更新文件时,唯一的加号diff
可能会被视为更多的教科书技术。