Как использовать 'grep' с такими символами, как * и _?

Мне нужно найти текст в одном или нескольких файлах.

Это то, что я использую:

grep -irI "hello" ~/

Однако, если я хочу найти строку, содержащую символы, такие как * или _, то они, похоже, игнорируются.

Допустим, я хочу искать во всех файлах строку a**__.

Как я могу это сделать? Большое спасибо - я просто не могу понять это!

2
задан 17.04.2020, 13:58

2 ответа

Существует опция -F:

-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.  (-F is specified by POSIX.)

Это отключит поиск по регулярным выражениям и интерпретацию символов, таких как * или .. Пример:

$ cat test 
a**__
$ grep -F 'a**__' test 
a**__
2
ответ дан 17.04.2020, 13:59

Вы должны использовать escape-символ (\) перед *, потому что, в противном случае, ваша строка для поиска станет регулярным выражением.

Например, если вы хотите найти **__, вы можете использовать:

 grep -irI "\*\*__" ~/

Подробнее о: В каком регулярном выражении какие символы нужно экранировать? [114 ].

0
ответ дан 17.04.2020, 14:00

Теги

Похожие вопросы