我有包含html文件的嵌套子目录。对于我想要从文件顶部删除的每个html文件,直到模式<div id="left-
这是我从osx终端的尝试:
find . -name "*.html" -exec sed "s/.*?<div id=\"left-col/<div id=\"left-col/g" '{}' \;
我在termainal中获得了很多html输出,但没有文件包含替换或写入。
答案 0 :(得分:4)
您的命令有两个问题。第一个问题是您没有为sed
选择输出位置。第二个是你的sed
脚本没有做你想做的事情:你发布的脚本会查看每一行并删除<div>
之前的所有内容。没有<div>
的行将不受影响。您可以尝试:
find . -name "*.html" -exec sed -i.BAK -n "/<div id=\"left-col/,$ p" {} \;
这也会通过将.BAK
附加到原始版本来自动备份您的文件。如果不合适,请将-i.BAK
更改为-i
。
答案 1 :(得分:1)
当您要将sed
正则表达式的结果写入文件时,您正在将stdout
正则表达式的结果输出到-i
。
要使用sed执行查找和替换,请使用find . -name "*.html" -exec sed -i "s/.*?<div id=\"left-col/<div id=\"left-col/g" '{}' \;
标志:
{{1}}
如果可能,请确保在执行此命令之前备份文件。否则,您可能会因输入错误的正则表达式而导致数据丢失。
答案 2 :(得分:0)
您没有将sed
的输出存储在任何地方;这就是为什么它会吐出html。