如何在grep中转义括号

时间:2010-09-09 03:35:16

标签: grep escaping

我想在目录中的所有JavaScript文件中grep函数调用'init()'。我如何使用grep执行此操作?

特别是,如何转义括号()

4 个答案:

答案 0 :(得分:48)

这取决于。如果使用常规grep,则不会转义:

echo '(foo)'|grep '(fo*)'

如果要将括号用作分组,则实际上必须转义。

如果您使用extended regular expressions,则会逃避:

echo '(foo)'|grep -E '\(fo*\)'

答案 1 :(得分:22)

如果您想要搜索字符串“init()”,请使用fgrep "init()"grep -F "init()"

这两个都将进行固定的字符串匹配,即将模式视为要搜索的纯字符串而不是正则表达式。我相信它也比正则表达式搜索更快。

答案 2 :(得分:4)

$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()

$ echo "init(test)" | grep -Erin 'init\([^)]*\)'
1:init(test)

$ echo "initwhat" | grep -Erin 'init\([^)]*\)'

答案 3 :(得分:1)

移至根目录(如果您知道JavaScript文件的位置)。然后执行以下操作。

grep 'init()' *.js