您可以通过标准添加grep
在\
中转义括号。
但是我希望在egrep
中使用\(
作为分组机制来转义括号,例如sed
。
我想编写egrep
表达式来解析以下内容:
log_message(_sanitize("my string"));
答案 0 :(得分:3)
grep
(BRE)中的括号不需要转义,它们在字面上匹配:
$ grep -o '(a)' <<< '(a)'
(a)
在egrep
(ERE)中,括号用于分组。它们可以转义以匹配字面括号:
$ egrep -o '(a)' <<< '(a)'
a
$ egrep -o '\(a\)' <<< '(a)'
(a)
因此,您只需将转义添加到您的字面上即可:
$ egrep -o 'log_message\(_sanitize\("my string"\)\);' \
<<< 'log_message(_sanitize("my string"));'
log_message(_sanitize("my string"));
答案 1 :(得分:2)
一种方法是将(
放在一个字符类中,如:
egrep 'log_message[(]_sanitize[(]"my string"[)][)];' <file>