![如何根据搜索按需跟踪并对结果进行着色](https://linux22.com/image/169044/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E6%90%9C%E7%B4%A2%E6%8C%89%E9%9C%80%E8%B7%9F%E8%B8%AA%E5%B9%B6%E5%AF%B9%E7%BB%93%E6%9E%9C%E8%BF%9B%E8%A1%8C%E7%9D%80%E8%89%B2.png)
您好,我有一个包含大量信息的日志文件,很难找到我要查找的内容,因此我使用此命令仅显示我想在日志中看到的内容,它将充当侦听器当模式匹配时只显示搜索结果
tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\""
并且工作正常,问题是如果我管道另一个 grep
tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"jsonKeyOne\"" | GREP_COLOR='01;31' egrep --color=always "\"jsonKeyTwo\""
我认为不起作用,因为当我通过管道将一个连接到另一个时,因为第一个结果不包含第二个条件,所以没有显示任何内容,所以我想对所有文件进行两个(或多个)grep 操作,然后给出每根绳子都有不同的颜色,以便更容易发现差异
注意如果我在末尾添加 :|$ ,它将充当常规尾部并向我显示许多不是我想要的额外信息
tail -f file.log | GREP_COLOR='01;36' egrep --color=always "\"stringOneExample\":|$"
答案1
最好使用:
grep -e 'jsonKeyOne' -e 'jsonKeyTwo'
...按照 OR 您的条件。根据您的 grep 风格, -E 'jsonKeyOne|jsonKeyTwo' 也是可能的。这是最快的选项,仅包含条款。
不同颜色的工作方式如下:第一个术语仅着色,所有其他线条未着色,下一个术语具有不同颜色和所有其他线条……直到最后一个术语具有其颜色和所有其他线条。
grep 或语法高亮,最好不要同时使用。