Content #
单行删除(d)命令用来删除模式空间中的当前行。然而,如果和N命令一起使用,则必须小心: $ sed ‘N ; /System\nAdmin/d’ data4.txt All System Admins should attend. $ 单行删除命令会在不同的行中查找单词System和Admin,然后在模式空间中将两行都删掉。 sed编辑器提供了多行删除(D)命令,该命令只会删除模式空间中的第一行,即删除该行中的换行符及其之前的所有字符: $ sed ‘N ; /System\nAdmin/D’ data4.txt Admin group meeting will be held. All System Admins should attend. $ 文本的第二行虽然被N命令加入了模式空间,但仍然完好。如果需要删除目标数据字符串所在行的前一行,那么D命令就能派上用场了。
这里有个例子,它会删除数据流中出现在第一行之前的空行: $ cat data5.txt
Header Line First Data Line
End of Data Lines $ $ sed ‘/^$/{N ; /Header/D}’ data5.txt Header Line First Data Line
End of Data Lines $ sed编辑器脚本会查找空行,然后用N命令将下一行加入模式空间。如果模式空间中含有单词Header,则D命令会删除模式空间中的第一行。如果不结合使用N命令和D命令,则无法做到在不删除其他空行的情况下只删除第一个空行。
From #
Linux命令行与shell脚本编程大全