2013-04-30 30 views
1

我正在使用命令行和sed。我需要一个命令来递归地从多个文件中删除。找到“string1”并删除它和“string2”之间的删除

我已经离开了这样的议论:

<!--String 1 --> 
Code to delete goes here 
<!--String 2 --> 

所以我需要删除串1,文本之间串2,在当前目录下的所有文件。

希望得到任何帮助:)

+0

你是什么意思“从多个文件递归”? – choroba 2013-04-30 11:19:12

+0

@choroba:在当前目录和子目录中。我在下面评论你的答案,它应该适用于你的sed行。只需用一些递归文件搜索来更新你的答案。 – Milde 2013-04-30 12:14:03

回答

4

只需使用地址:

sed -e '/<!--String 1 -->/,/<!--String 2 -->/d' 

更新:递归应用sed命令文件的路径下,你可以使用find

find /path/to/directory -type f -exec sed -e '/<!--String 1 -->/,/<!--String 2 -->/d' {} \; 
+0

你的地址是什么意思? – Barney 2013-04-30 10:47:00

+1

@Barney:[地址](http://unixhelp.ed.ac.uk/CGI/man-cgi?sed)在'sed'手册页中定义。 – choroba 2013-04-30 10:50:57

+0

对于所有文件和下面的文件:find。 -type f -exec '{}'\; – Milde 2013-04-30 11:04:08

相关问题