我很难编写一个正则表达式放入 grep 中以匹配包含 foo_bar 的所有行以及不包含 foo_.* 的所有其他行(除了 foo_bar 应该仍然匹配)。
因此:
foo_bar Line 1
foo_baz Line 2
Line 3
foo_biz Line 4
我希望返回第 1 行和第 3 行。
注意,我不能只匹配 not foo_baz 和 not foo_biz,因为 baz 和 biz 可以有很多很多东西。它需要是 foo_.*
最佳答案
在 OS X 下,我对您的输入执行了以下命令:
$ grep -P -v '^foo_(?!bar)' test.txt
foo_bar Line 1
Line 3
请注意:
-P, --perl-regexp
Interpret PATTERN as a Perl regular expression.
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
关于正则表达式查找包含 foo_bar 或不包含 foo 的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497527/