如何使用sed删除html元标记?

时间:2011-11-03 12:53:45

标签: html sed

我用httrack制作了很多index.html。现在我想用sed删除相同的2个添加的元标记。

名为:

的元标记
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->

我认为这是编辑文件夹中所有索引htmls recursiv的解决方案。

cd /home/user/websites
grep -lr -e 'index' *.html | xargs sed -i 's/<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->
//g'

它的工作请帮帮我 感谢

1 个答案:

答案 0 :(得分:2)

试试这个:

grep -lr -e 'index' *.html | xargs sed -i .bak -e 's#<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->##g'

只有当您要修改的文件必须包含 index时才会有效。如果要修改当前目录及其子目录下的所有index.html文件,请使用以下命令:

find . -name 'index.html' | xargs sed -i .bak -e 's#<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8"><!-- /Added by HTTrack -->##g'

无论哪种方式,重要的是在sed的命令中用/替换#。只要您保持一致(即所有三个分隔符都是相同的字符),此命令允许您使用几乎任何分隔符。您应该选择未出现在表达式中的分隔符,或者您必须在那里将其转义。

另请注意,我将标志修改为sed。从sed手册页:

 -i extension
         Edit files in-place, saving backups with the specified extension.  If a zero-length extension is given, no backup will be saved.  It is not recom-
         mended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is
         exhausted, etc.

 -e command
         Append the editing commands specified by the command argument to the list of commands.

这意味着我的命令会在修改之前将每个文件保存为备份,并将“.bak”附加到备份文件的名称。如果您不希望备份通过零长度扩展,请执行以下操作:-i ''

通常,正则表达式不足以解析HTML。这只是因为你有一个固定的字符序列来替换恰好是HTML。