如何在egrep中转义括号

时间:2015-07-17 18:33:00

标签: regex bash grep

您可以通过标准添加grep\中转义括号。 但是我希望在egrep中使用\(作为分组机制来转义括号,例如sed。 我想编写egrep表达式来解析以下内容:

log_message(_sanitize("my string"));

2 个答案:

答案 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>