Як використовувати grep для пошуку кількох варіантів


6

Як я можу використовувати grep для пошуку рядка з 'res' або 'rep'?

я намагаюся "grep -e res | rep" або gre -e "rep | rep", але це не працює.

Відповіді:


16

Ви також можете використовувати опцію -E з grep, тому не потрібно бігти "|", наприклад:

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

Або ви можете використовувати egrep, що те саме, що і grep -E:

egrep файл 'res | rep'


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

8

Вам потрібно уникнути символу труби:

grep 'res\|rep' file

або використовувати кілька -eваріантів:

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

0
  • Таким чином, регулярний вигляд:

    EDIT grep -nis "re[sp]" <FILENAME>

  • Таким чином вам будуть представлені всі рядки, що містять або "res", або "rep"

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


1
Можливо, ви хочете втекти, re[sp]щоб не випадково розширити оболонку, чи повинні бути файли з ім'ям res або rep.
hlovdal

Це не обов'язково, оскільки воно спочатку після списку параметрів і як таке трактується як шаблон.
Dlf

2
Коментар hlovdal правильний. Дана відповідь порушиться, якщо існують файли, названі 'res' та 'rep', оскільки оболонка перетворить командний рядок у "grep -nis rep res <FILENAME>". Отже, ви не знайдете випадків "res" - замість цього ви будете шукати "rep" у файлах 'res' та <FILENAME>.
Джонатан Хартлі

Додано подвійні лапки, щоб забезпечити хорошу інтерпретацію шаблону.
Dlf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.