[英]Mac: replace text inside files in directory using regular expression
我需要将目录中的所有匹配项(正则表达式)从“ * ::”替换为“ \\ * ::”示例:(在多个php文件中)
ID::
user::
process::
....
成为:
\ID::
\user::
\process::
我目前使用单个命令
find . -type f -name '*.php' -exec sed -i '' s/ID::/\\\\ID::/ {} +
find . -type f -name '*.php' -exec sed -i '' s/user::/\\\\user::/ {} +
find . -type f -name '*.php' -exec sed -i '' s/process::/\\\\process::/ {} +
如何编写正则表达式来替换任何“ * ::” =>“ \\ * ::”
谢谢,
您想使用“分组”或“反向引用”来反向引用正则表达式的一部分。 这是通过用\\(
和\\)
包围目标组,并用\\1
, \\2
等进行引用来完成的。在您的情况下,以下表达式应该起作用:
$ echo -e "ID::\nuser::\nprocess::" | sed 's/\(.*\)::/\\\1::/g'
具有以下输出:
\ID::
\user::
\process::
我更新了“ bebop”解决方案以满足我的要求,非常感谢他
解:
sed -i -e 's/\([A-Za-z]*\)::/\\\1::/g' `grep -ril '::' *.php`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.