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