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