我用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'
它的工作请帮帮我 感谢
答案 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。