Как избежать скобок в 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