只删除文件中的一行

use*_*648 6 command-line

我有一个包含以下几行的文件:

SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Run Code Online (Sandbox Code Playgroud)

如何删除“SUKsoft:”行?

这一行可以在文件的任何位置(从现在开始,或者在中间)。

是否有执行此操作的命令?

A.B*_*.B. 8

删除行使用

sed -i '/SUKsoft:\s*$/d' your_file 
Run Code Online (Sandbox Code Playgroud)

例子

% cat foo
SUKsoft: 
SUKsoft: App-Conduct_Risk_Comment   
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

% sed -i '/SUKsoft:\s*$/d' foo

% cat foo                    
SUKsoft: App-Conduct_Risk_Comment   
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Run Code Online (Sandbox Code Playgroud)

  • 请注意,\s 在大多数其他平台上需要 -E,甚至可能完全不受支持。因为这是 Ubuntu 特定的站点,所以很好。[[:space:]] 用于 Posix。 (2认同)

200*_*ess 3

grep搜索满足模式的线。 grep -v 丢弃满足模式的行。

grep -v '^SUKsoft: *$'
Run Code Online (Sandbox Code Playgroud)

该模式是:以 ( ^)开头的行SUKsoft:,可能后跟空格,但直到行结束 ( $) 为止没有其他内容。