许多文件中的字符串替换

时间:2017-11-21 03:51:46

标签: perl replace

我正在使用命令

perl -pe 's/ReplaceThis/`cat T1.php`/ge' -i T1.php.txt

将文件T1.php.txt中的字符串“ReplaceThis”替换为文件T1.php的内容,并且工作正常。但我想一次为数百个文件执行此操作,Ti.php为1< = i< = 700。我正在尝试

for file in *.php; do perl -pe 's/ReplaceThis/`cat "$file"`/ge' -i 
"$file".txt ; done

但我收到错误: cat ::没有这样的文件或目录
我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

不要尝试从shell脚本生成Perl代码!使用其他方法(args,env,fd,file)将信息传递给脚本。

一个解决方案:

for file in *.php; do
    perl -i -pe'
       BEGIN { local $/; $repl = <STDIN>; }
       s/ReplaceThis/$repl/g;
    ' "$file".txt <"$file"
done