我想通过命令行在HTML文件上运行查找和替换。

我的命令看起来像这样:

sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html > index.html

当我运行它并在之后查看该文件时,它是空的。它删除了我文件的内容。

当我再次恢复文件后运行这个:

sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html

stdout是文件的内容,并且已经执行了查找和替换。

为什么会这样?


当前回答

sed -i.bak "s#https.*\.com#$pub_url#g" MyHTMLFile.html

如果你有一个链接要添加,试试这个。按照上面的方法搜索URL(这里以https开始,以。com结束),并将其替换为URL字符串。我在这里使用了一个变量$pub_url。S表示搜索g表示全局替换。

真的有用!

其他回答

sed -i.bak "s#https.*\.com#$pub_url#g" MyHTMLFile.html

如果你有一个链接要添加,试试这个。按照上面的方法搜索URL(这里以https开始,以。com结束),并将其替换为URL字符串。我在这里使用了一个变量$pub_url。S表示搜索g表示全局替换。

真的有用!

您应该尝试使用-i选项进行就地编辑。

使用sed的-i选项,例如:

sed -i bak -e s/STRING_TO_REPLACE/REPLACE_WITH/g index.html

要更改多个文件(并将每个文件的备份保存为*.bak):

perl -p -i -e "s/\|/x/g" *  

将采取所有文件在目录和替换|与x 这就是所谓的“Perl饼”(简单如饼)

sed -i 's/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g' index.html

这将对文件index.html进行全局就地替换。引用字符串可以防止查询和替换中出现空白的问题。