Regex sed:显示选定要删除的行

Regex sed:显示选定要删除的行,regex,sed,Regex,Sed,如何在sed中使用verbose标志。如果我使用sed命令删除一些行,那么我希望它们显示在屏幕上,无论哪一行被删除。还让我知道这是否可以通过脚本完成 提前感谢sed没有详细标志 不过,您可以编写一个sed脚本,将删除的行与其他行分开。您可以稍后查看已删除的行,并确定删除它们是否是一个好主意 这里有一个例子。我想从test.dat中删除以数字开头的每一行 $ cat test.dat 1 First line 2 Second line 3 Third line A Keep this one

如何在sed中使用verbose标志。如果我使用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”的内容

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

这可能适合您(GNU-sed)


没有详细标志,但通过将要删除的行发送到stderr,可以实现您所需的效果。

sed中没有详细标志
$ cat deleted.dat
1 First line
2 Second line
3 Third line
sed -e '/pattern_to_delete/{w /dev/stderr' -e ';d}' input_file > output_file