我需要替换目录中的所有匹配(正则表达式)来自" * ::"成为" \ * ::" 示例:(在多个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::/ {} +
如何编写正则表达式来替换任何" * ::" => " \ * ::"
感谢,
答案 0 :(得分:1)
您希望使用“分组”或“反向引用”来引用正则表达式的一部分。这是通过使用\(
和\)
包围目标群组来完成的,然后使用\1
,\2
等回复它们。在您的情况下,以下表达式应该有效:
$ echo -e "ID::\nuser::\nprocess::" | sed 's/\(.*\)::/\\\1::/g'
使用以下输出:
\ID::
\user::
\process::
答案 1 :(得分:1)
我更新" bebop"满足我要求的解决方案,非常感谢他
溶液:
sed -i -e 's/\([A-Za-z]*\)::/\\\1::/g' `grep -ril '::' *.php`