Как избежать скобок в grep

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

grep 'init()' *.js