zsh sed区分“ \(”和“(”

问题描述 投票:0回答:1

[我正在从zsh脚本进行一些字符串编辑(在Mac OS Catalina上)。有些字符串的括号前有一个斜杠,有些则没有(通常是一个空格)。

我正在尝试编写一个忽略左括号的命令,除非它事先有一个斜杠。

所以命令...

sed 's/"\("/"\\\("/g'

...不会被...触发

"foo (bar)" 

...但将在...上触发

"foo \(bar)"
macos sed zsh slash
1个回答
0
投票

您可以使用

sed 's/\\*(/\\\\(/g' file > outfile

[这里,\\*(匹配任意数量的\,然后匹配(,并且\\\\(替换实际上替换为两个\字符,然后替换为(。必须在替换部分中使用双反斜杠表示一个反斜杠,因为\用于编码反参考(例如\1\2等)。

© www.soinside.com 2019 - 2024. All rights reserved.