如何打印由sed / awk更改的行号

时间:2015-06-26 01:53:09

标签: linux unix awk sed

是否可以打印由sed更改的行号和行内容?

我只需要一个简单的文本替换,不需要正则表达式:

sed -i "s:replace_me:replaced:" test.c

我需要它用于bash脚本。

提前致谢!

2 个答案:

答案 0 :(得分:2)

你可以用几种方式摆动它:

的vim

使用文本编辑器可以交互式替换模式,编辑器会在每次替换之前提示。因此,您可以为每个案例选择yn

$ vim file
:%s/pattern/replace/gc

DIFF

使用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可能会被视为更多的教科书技术。