sed:选择要删除的显示行

use*_*552 2 regex sed

如何在sed中使用详细标志.例如.如果我使用sed命令删除某些行,那么我希望它们在屏幕上显示哪个行被删除.如果可以通过脚本完成此操作,请告诉我?

提前致谢

Mik*_*ll' 5

sed没有冗长的标志.

但是,您可以编写一个sed脚本,将已删除的行与其他行分开.您可以稍后查看删除的行,并决定是否删除它们是个好主意.

这是一个例子.我想从test.dat中删除以数字开头的每一行.

$ cat test.dat
1 First line
2 Second line
3 Third line
A Keep this one
Run Code Online (Sandbox Code Playgroud)

这是将"执行"删除的sed脚本.它查找以数字开头的行,将它们写入文件"deleted.dat",然后从模式空间中删除它们.

$ cat code/sed/delete-verbose.sed
/^[0-9]/{
w /home/myusername/deleted.dat
d
}
Run Code Online (Sandbox Code Playgroud)

这是运行它时会发生什么.

$ sed -f code/sed/delete-verbose.sed test.dat
A Keep this one
Run Code Online (Sandbox Code Playgroud)

这是它写给"deleted.dat"的内容.

$ cat deleted.dat
1 First line
2 Second line
3 Third line
Run Code Online (Sandbox Code Playgroud)

当您确信脚本要做正确的事情时,将输出重定向到另一个文件,或者就地编辑文件(-i选项).