在unix中grep for X或Y?

时间:2011-12-11 21:04:08

标签: regex unix grep

如何从文本文件中捕获以字符“X”开头或包含单词“foo”的所有行?

这有效:

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

但我试过了:

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

和变体,但无法在任何地方找到正确的语法。怎么办呢?

感谢。

3 个答案:

答案 0 :(得分:10)

如果您的grep实现不符合POSIX,则可以使用egrep而不是grep:

egrep '^@|foo' text

答案 1 :(得分:3)

cat text | grep '^@|foo'

这样做。 [foo]匹配一个fo的字符。

如果您不想匹配foofoobar等部分字词,请使用字边界锚:

cat text | grep '^@|\bfoo\b'

答案 2 :(得分:1)

contains the word "foo"是:(.*foo.*)所以你的正则表达式会变成:

cat yourFilePath | grep -E '^@|(.*foo.*)'