繁体   English   中英

Mac:使用正则表达式替换目录中文件内的文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM