2011-08-04 71 views
22

块我有一个文本块,看起来像这样:使用SED删除文本

<!-- BOF CLEAN --> 
... a bunch of stuff 
    <!-- EOF CLEAN --> 

我想删除整个块。什么是sed命令?

回答

35
$ cat text 
abc 
    <!-- BOF CLEAN --> 
... a bunch of stuff 
    <!-- EOF CLEAN --> 
def 
$ sed '/<!-- BOF CLEAN -->/,/<!-- EOF CLEAN -->/d' text 
abc 
def 

http://www.catonmat.net/blog/sed-one-liners-explained-part-three/

+0

SED删除了我文件!!我做了'sed'/^0.*$/d's1d13700.c',它向控制台吐出正确的结果,然后我做了'sed'/^0.*$/d's1d13700.c> s1d13700.c'用结果覆盖原始文件,文件完全变空! –

+6

@ Zom-B在'sed ... s1d13700.c> s1d13700.c'中发生了什么?在运行sed之前,shell首先创建一个新的空文件's1d13700.c',从而用相同的名称覆盖输入文件。使用'sed -i.original ... s1d13700.c'来就地更改文件并将原始文件的备份创建为's1d13700.c.original'。 –