zsh sed 区分“\(”和“(”
zsh sed distinguish "\(" from "("
我正在通过 zsh 脚本(在 Mac OS Catalina 上)进行一些字符串编辑。有些字符串前面有带斜杠的括号,有些则没有(通常前面有 space)。
我正在尝试编写一个忽略左括号的命令,除非它事先有一个斜杠。
所以命令...
sed 's/"\("/"\\("/g'
...不会被...触发
"foo (bar)"
...但会触发...
"foo \(bar)"
您可以使用
sed 's/\*(/\\(/g' file > outfile
在这里,\*(
匹配任意数量的 \
然后 (
并且 \\(
替换实际上替换为两个 \
字符然后 (
。需要在替换部分使用双反斜杠来表示一个反斜杠,因为 \
用于编码反向引用(如 </code>、<code>
等)。
我正在通过 zsh 脚本(在 Mac OS Catalina 上)进行一些字符串编辑。有些字符串前面有带斜杠的括号,有些则没有(通常前面有 space)。
我正在尝试编写一个忽略左括号的命令,除非它事先有一个斜杠。
所以命令...
sed 's/"\("/"\\("/g'
...不会被...触发
"foo (bar)"
...但会触发...
"foo \(bar)"
您可以使用
sed 's/\*(/\\(/g' file > outfile
在这里,\*(
匹配任意数量的 \
然后 (
并且 \\(
替换实际上替换为两个 \
字符然后 (
。需要在替换部分使用双反斜杠来表示一个反斜杠,因为 \
用于编码反向引用(如 </code>、<code>
等)。