Как избежать скобок в grep - PullRequest
50 голосов
/ 09 сентября 2010

Я хочу использовать grep для вызова функции 'init ()' во всех файлах JavaScript в каталоге.Как мне сделать это с помощью grep?

В частности, как мне избежать скобок, ()?

Ответы [ 4 ]

49 голосов
/ 09 сентября 2010

Это зависит. Если вы используете обычный grep, вы не избежите:

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

Вы действительно должны сбежать, если хотите использовать скобки в качестве группировки.

Если вы используете расширенные регулярные выражения , вы экранируете:

echo '(foo)'|grep -E '\(fo*\)'
23 голосов
/ 09 сентября 2010

Если вы хотите найти именно строку «init ()», тогда используйте fgrep "init()" или grep -F "init()".

Оба из них будут выполнять фиксированное сопоставление строк, то есть будут обрабатывать шаблон как простуюСтрока для поиска, а не в качестве регулярного выражения.Я считаю, что это также быстрее, чем поиск по регулярному выражению.

4 голосов
/ 09 сентября 2010
$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()

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

$ echo "initwhat" | grep -Erin 'init\([^)]*\)'
1 голос
/ 09 сентября 2010

Перейдите в корневой каталог (если вы знаете, где находятся файлы JavaScript).Затем выполните следующее.

grep 'init()' *.js
...