How to escape parenthesis in grep

GrepEscaping

Grep Problem Overview


I want to grep for a function call 'init()' in all JavaScript files in a directory. How do I do this using grep?

Particularly, how do I escape parenthesis, ()?

Grep Solutions


Solution 1 - Grep

It depends. If you use regular grep, you don't escape:

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

You actually have to escape if you want to use the parentheses as grouping.

If you use extended regular expressions, you do escape:

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

Solution 2 - Grep

If you want to search for exactly the string "init()" then use fgrep "init()" or grep -F "init()".

Both of these will do fixed string matching, i.e. will treat the pattern as a plain string to search for and not as a regex. I believe it is also faster than doing a regex search.

Solution 3 - Grep

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

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

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

Solution 4 - Grep

Move to your root directory (if you are aware where the JavaScript files are). Then do the following.

grep 'init()' *.js

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMegha Joshi - GoogleTV DevRelView Question on Stackoverflow
Solution 1 - GrepMatthew FlaschenView Answer on Stackoverflow
Solution 2 - GrepDave KirbyView Answer on Stackoverflow
Solution 3 - Grepghostdog74View Answer on Stackoverflow
Solution 4 - GrepKonark ModiView Answer on Stackoverflow