一个只显示更改行的简单 sed 脚本

use*_*028 3 regex bash sed

我怎样才能制作一个单独的 sed 脚本(我们称之为 script.sed),它只显示更改的行,而不必-n在执行时使用该选项?(对不起我的英语不好)

我有一个名为 data2.txt 的带有数字的文件,我需要更改以“.5”结尾的行并在控制台中打印出这些更改后的行。

我知道如何使用单个命令 ( sed -n 's/.5$//gp' data2.txt)来执行此操作,但是我们的大学教授要求我们使用sed -f script.sed data2.txt命令执行相同操作。

有任何想法吗?

And*_*ark 5

以下应该适用于您的 sed 脚本:

s/.5$//gp
d
Run Code Online (Sandbox Code Playgroud)

-n选项将禁止自动打印该行,另一种方法是使用该d命令。从手册页:

s/.5$//gp
d
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为该行的自动打印发生在一个循环的末尾,并且使用该d命令意味着您永远不会到达一个循环的末尾,因此不会自动打印任何行。