cla*_*amp 6 ls grep find shell-script text-processing
我正在寻找一个 shell 脚本,它递归地遍历.php
目录中的所有文件并执行特定文本模式的搜索和替换。
搜索模式很长(> 5000 个字符),因此为了方便起见,可能会将其保存在另一个文本文件中。它还包含正斜杠字符。
编辑:我想我想出了第一部分:
find . -name "*.php"
Run Code Online (Sandbox Code Playgroud)
但是我如何在这些文件中搜索和替换?
它可以通过 sed 和 xargs 的良好组合轻松完成。
find . -name "*.php" | xargs -n 1 echo
Run Code Online (Sandbox Code Playgroud)
将向您展示 xargs 的强大功能。
之后,在示例文件上,您可以使用就地更改 (-i) 或备份更改 (-i.bak) 来测试正则表达式。如果您的模式/替换已经有一个,您也可以使用其他字符来替换 '/'。
最后,它应该是这样的:
pattern=`cat /path/to/pattern`; replacement=`cat /path/to/replacement`
find . -name "*.php" | xargs -n 1 sed -i -e "s|$pattern|$replacement|g"
Run Code Online (Sandbox Code Playgroud)
尝试:
find . -name "*.php" -exec sed -i "s/$(cat /path/to/pattern.txt)/$(cat /path/to/replacement.txt)/g" {} \;
Run Code Online (Sandbox Code Playgroud)
哪里pattern
是要搜索的模式,replacement
是替换它的文本。
“就地”编辑文件的-i
选项sed
。如果要在编辑文件之前创建文件的备份,请使用-i'.bak'
.
归档时间: |
|
查看次数: |
7648 次 |
最近记录: |