如何在sed中使用详细标记。例如。如果我使用sed命令删除某些行,那么我希望它们在屏幕上显示哪个行被删除。如果可以通过脚本完成此操作,请告诉我?
提前致谢
答案 0 :(得分:5)
sed没有详细的标志。
但是,您可以编写一个sed脚本,将已删除的行与其他行分开。您可以稍后查看删除的行,并决定是否删除它们是个好主意。
这是一个例子。我想从test.dat中删除以数字开头的每一行。
$ cat test.dat
1 First line
2 Second line
3 Third line
A Keep this one
这是将“执行”删除的sed脚本。它查找以数字开头的行,将它们写入文件“deleted.dat”,然后从模式空间中删除它们。
$ cat code/sed/delete-verbose.sed
/^[0-9]/{
w /home/myusername/deleted.dat
d
}
这是运行时发生的情况。
$ sed -f code/sed/delete-verbose.sed test.dat
A Keep this one
以下是它写给“deleted.dat”的内容。
$ cat deleted.dat
1 First line
2 Second line
3 Third line
当您确信脚本要做正确的事情时,将输出重定向到另一个文件,或者就地编辑文件(-i
选项)。
答案 1 :(得分:3)
这可能适合你(GNU sed);
sed -e '/pattern_to_delete/{w /dev/stderr' -e ';d}' input_file > output_file
没有详细标志,但通过将要删除的行发送到stderr,可以实现所需的效果。