![Grep:对多个表达式之一使用颜色](https://linux22.com/image/121921/Grep%EF%BC%9A%E5%AF%B9%E5%A4%9A%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B9%8B%E4%B8%80%E4%BD%BF%E7%94%A8%E9%A2%9C%E8%89%B2.png)
是否可以使用 grep 搜索多个表达式,但只为其中特定的一个表达式着色?
我所追求的示例:
cat file | grep -e foo --colour -e bar
输出(其中粗体代表彩色):
富巴兹
酒吧巴兹
曲克斯富
富酒吧
答案1
PCRE 可能被滥用,因此存在匹配但没有匹配的内容会突出显示:
grep -P 'foo.*\K$|bar' input
答案2
一个解决方案(虽然不是特别优雅)是使用多个 grep 查询。
cat file | grep -e foo -e bar | grep -9999 --colour -e bar
注意:该-9999
标志是一个让 grep 从 stdin 输出大量行的 hack。如果需要,可以增加该值。