[我正在从zsh脚本进行一些字符串编辑(在Mac OS Catalina上)。有些字符串的括号前有一个斜杠,有些则没有(通常是一个空格)。
我正在尝试编写一个忽略左括号的命令,除非它事先有一个斜杠。
所以命令...
sed 's/"\("/"\\\("/g'
...不会被...触发
"foo (bar)"
...但将在...上触发
"foo \(bar)"
您可以使用
sed 's/\\*(/\\\\(/g' file > outfile
[这里,\\*(
匹配任意数量的\
,然后匹配(
,并且\\\\(
替换实际上替换为两个\
字符,然后替换为(
。必须在替换部分中使用双反斜杠表示一个反斜杠,因为\
用于编码反参考(例如\1
,\2
等)。