我知道如何在一组文件中进行搜索和替换:
perl -pi -w -e 's/search/replace/g;' *.php
因此我可以使用它来搜索关键字或词组并进行更改。但是我有一个更复杂的任务,我不知道该怎么做。
我想在我所有的 php 文件中进行搜索和替换,以搜索特定的关键字并将其替换为文件名减去扩展名。
示例:在文件 Mountains.php 中搜索关键字 Trees,在所有看到 Trees 的地方,将其替换为 Mountains
当然,我希望能够批量处理数百个具有不同名称的 php 文件,但是都包含搜索词 Trees。
如果有人正在寻找额外的挑战,哈哈,如果我能做一个更复杂的场景就更好了,比如......
示例:在文件 MountainTowns.php 中搜索关键字 Trees,在所有你看到 Trees 的地方,将其替换为“Mountain Towns”(注意多余的空格,大写字母可能会指示空格所在的位置)
感谢您抽空考虑我的问题。
最佳答案
好吧,文件名在 $ARGV 中,所以不需要做更多的工作。
perl -i -pe '($x=$ARGV)=~s{.php$}{};s{Trees}{$x}g' BlueMountains.php RedMountains.php
加入
$x=~s{(.)([A-Z])}{$1 $2}g;
在大写字母前加空格,为整行
perl -i -pe '($x=$ARGV)=~s{.php$}{};$x=~s{(.)([A-Z])}{$1 $2}g;s{Trees}{$x}g' BlueRedMountains.php
关于Linux 根据文件名提示更改文件内的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9592306/