Как использовать grep для поиска нескольких вариантов


4

Как я могу использовать grep для поиска строки с «res» или «rep»?

я пытаюсь "grep -e res | rep" или gre -e "rep | rep" но это не работает.

Ответы:


13

Вы также можете использовать опцию -E с grep, поэтому вам не нужно экранировать «|», например:

Файл grep -E 'res | rep'

Или вы можете использовать egrep, то же самое, что и grep -E:

файл egrep 'res | rep'


Это не работает для меня на OS X, когда я сделал pmset -g sched | grep -E "shutdown|restart|sleep", (Ни один не использовал egrep.)
2rs2ts

7

Вам нужно экранировать символ трубы:

grep 'res\|rep' file

или использовать несколько -e опции:

grep -e 'res' -e 'rep' file

0
  • Тип регулярного выражения:

    РЕДАКТИРОВАТЬ grep -nis "re[sp]" <FILENAME>

  • Таким образом, вам будут представлены все строки, содержащие «res» или «rep»

  • также обратите внимание, что -nis здесь не важно, мне просто так нравится ... :)


1
Вероятно, вы хотите убежать re[sp] чтобы он не был случайно раскрыт оболочкой при наличии файлов с именем res или rep.
hlovdal

В этом нет необходимости, поскольку он стоит первым после списка параметров и как таковой интерпретируется как шаблон.
Dlf

2
Комментарий Хловдала правильный. Данный ответ прекратится, если существуют файлы с именами res и rep, потому что оболочка преобразует командную строку в «grep -nis rep res & lt; FILENAME & gt;» Следовательно, вы не найдете вхождений 'res' - вместо этого вы будете искать 'rep' в файлах 'res' и & lt; FILENAME & gt ;.
Jonathan Hartley

Добавлены двойные кавычки, чтобы гарантировать правильную интерпретацию шаблона.
Dlf
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.