grep для X или Y в Unix? - PullRequest
       6

grep для X или Y в Unix?

3 голосов
/ 12 декабря 2011

как я могу захватить все строки из текстового файла, которые начинаются с символа "X" или содержат слово "foo"?

Это работает:

cat text | grep '^@'  # begins with @

, но я пытался:

cat text | grep '^@|[foo]' 

и вариаций, но нигде не могу найти правильный синтаксис.как это можно сделать?

спасибо.

Ответы [ 3 ]

10 голосов
/ 12 декабря 2011

Если ваша реализация grep не соответствует POSIX, вы можете использовать egrep вместо grep:

egrep '^@|foo' text
3 голосов
/ 12 декабря 2011
cat text | grep '^@|foo'

делает это. [foo] соответствует одному символу, который является либо f, либо o.

Если вы не хотите сопоставлять части слов, например, foo в foobar, используйте привязки к словам:

cat text | grep '^@|\bfoo\b'
1 голос
/ 12 декабря 2011

contains the word "foo" равно: (.*foo.*), поэтому ваше регулярное выражение станет:

cat yourFilePath | grep -E '^@|(.*foo.*)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...