使用命令行在文件夹中替换所有文件中的文本?

4

我需要在一个文件夹中的所有文件中替换文本,我正在使用Perl但出现了错误。

这是我运行的代码:

perl -pi.bak -e 's/<START>/<url><loc>http://www.mysite.com/page//g' *

基本上,我只需要替换。
<START>

使用这个:

<url><loc>http://www.mysite.com/page/

这是我得到的错误信息:

Illegal division by zero at -e line 1, <> line 1.

有人可以告诉我应该做什么吗?我已经尝试了几种其他方法,但似乎都不起作用... 我真的需要通过命令行完成,以便更快,因为有超过一千万行。谢谢!

2个回答

10

你替换文本中的 / 符号被视为分隔符,也被视为除法运算符。你可以在适当的位置使用 \/ 转义斜杠,或者使用其他分隔符。尝试:

perl -pi.bak -e 's#<START>#<url><loc>http://www.mysite.com/page/#g' *

4

你需要对斜杠进行转义。

s/<START>/<url><loc>http:\/\/www.mysite.com\/page\//g

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接