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

时间:2012-11-01 23:09:14

标签: perl command-line

我需要替换我的某个文件夹中的所有文件中的文本,并且使用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 个答案:

答案 0 :(得分:10)

替换文本中的/ es被视为分界符,也是分区运算符。您可以在适当的情况下将slases转义为\ /,或使用备用分隔符。尝试:

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

答案 1 :(得分:4)

你需要逃避斜杠。 s/<START>/<url><loc>http:\/\/www.mysite.com\/page\//g