【发布时间】:2014-03-10 13:26:38
【问题描述】:
我正在用 sed 编辑一个文件。
我正在使用这个
sed -i 's/^display.*//g'
这里的问题是它没有删除\n 换行符。
因此,如果有很多受影响的文件,则会导致文件充满新行。
那么我怎么能说 sed 它也应该删除新行,或者使用不同的 bash 命令来删除所有连续超过三个换行符的换行符?
【问题讨论】:
我正在用 sed 编辑一个文件。
我正在使用这个
sed -i 's/^display.*//g'
这里的问题是它没有删除\n 换行符。
因此,如果有很多受影响的文件,则会导致文件充满新行。
那么我怎么能说 sed 它也应该删除新行,或者使用不同的 bash 命令来删除所有连续超过三个换行符的换行符?
【问题讨论】:
不要使用s//g 替换,而是使用d 删除匹配行:
sed -i '/^display/d' file
请注意,甚至不需要用.* 指示其余行,只需^display 就足够了。
$ cat a
hello
display is something
and this is another display but
display is here
blabla
$ sed -i '/^display/d' a
$ cat a
hello
and this is another display but
blabla
【讨论】:
您提到您正在编辑文件,因此使用vim 您可以:
:g/^display/d
【讨论】: