如何使用 grep 提取部分搜索内容。
示例:我想提取其中包含“bc”的行 但不包括包含“abc”的行。
我不太优雅的解决方案是:
cat file.txt | grep -v abc | grep bc
还有其他命令可以执行此操作吗?
关于此事的答案
egrep
或 grep -E
可以使用现代正则表达式,它们比基本正则表达式更强大、更一致(作为参考,请在 FreeBSD 系统上执行 man re_format
)。
不幸的是,他们仍然不支持 负面后向断言,这是您在不遵循 bc
a
的方法。但它们足以在行首要求 bc
或 bc
跟随与 a
不同的任何字符。其中只是写道:
grep -E -e '(^bc)|([^a]bc)' file.txt