删除文件中的一行

删除文件中的一行

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

SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

我怎样才能删除“SUKsoft:”这一行?

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

有命令可以执行此操作吗?

答案1

消除线路使用

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

例子

% 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

答案2

以下是删除所需线条的步骤:

$ sed 's/SUKsoft: *$//' file.txt

SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

我假设file.txt包含这些行。

或者,

$ sed 's/SUKsoft: *$//; /^$/d' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

它不会留下任何空白的线。

要在文件中进行编辑,您可以使用,

sed -i 's/SUKsoft: *$//' file.txt

或者

sed -i 's/SUKsoft: *$//; /^$/d' file.txt

根据您的需要。

AB的答案,其中以更紧凑的方式完成。感谢通配符

答案3

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

grep -v '^SUKsoft: *$'

模式为:^以 开头 ( )的行SUKsoft:,后面可能跟着空格,但没有其他内容,直到行尾 ( $)。

答案4

从你的后原始来源“SUKsoft:” 之后没有空格或空格序列,但是为了安全起见,如果存在这些空格或空格序列,此命令将处理它们。

使用 Perl:

perl -ne '!/^SUKsoft: *$/&&print' input
  • !/^SUKsoft:$/&&print:如果当前行与模式不匹配,该模式匹配以字符串开头且后跟零个或多个空格的^SUKsoft: *$行,则打印该行;SUKsoft:
% cat input
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% perl -ne 'print unless /^SUKsoft: *$/' input
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

相关内容