如何在 sed 中使用详细标志。例如。如果我使用 sed 命令删除一些行,那么我希望它们显示在屏幕上,无论哪些行被删除。还让我知道这是否可以通过脚本完成?
提前致谢
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
选项)。
这可能对你有用(GNU sed);
sed -e '/pattern_to_delete/{w /dev/stderr' -e ';d}' input_file > output_file
没有详细标志,但是通过将要删除的行发送到 stderr 可以实现您需要的效果。