【问题标题】:Can i grep ( or filter) lines of a particular color from the terminal output?我可以从终端输出中 grep(或过滤)特定颜色的行吗?
【发布时间】:2019-08-01 15:44:35
【问题描述】:

我读到了这个问题How to change the output color of echo in Linux

似乎它是一个特殊的字符,使颜色出现

我可以用这个 grep 吗?

我的用例是 .我有非常大的单元测试输出,但大多数行是测试成功的,有些是红色的失败,我想过滤掉表明成功的行。

如果这很重要,我目前正在使用 macbook

【问题讨论】:

  • 什么意思?某个字符或字符串以某种颜色显示。如果您想在该特定颜色上grep,您可以简单地尝试找出导致该颜色出现的字符或字符串。
  • 您不一定只使用grep 获取颜色代码。这取决于输出文本的程序。如果输出被重定向,其中一些会关闭颜色代码。
  • @lurker - 好点 - 可以尝试将 --color always 添加到命令中。如果执行自动重定向检测,许多命令都支持此选项。
  • 如果您的单元测试输出通过颜色识别成功,则它已损坏。应该有一些您可以过滤的实际文本。
  • 另一个选项是命令是否支持xml等结构化输出,这样会更容易解析

标签: linux bash shell command-line terminal


【解决方案1】:

可能使用 PCRE,例如取决于用于着色的实际代码

grep -P '\e\[31m' <<< $'\e[31mred\e[0m  \n \e[34mblue\e[0m'
grep -P '\e\[34m' <<< $'\e[31mred\e[0m  \n \e[34mblue\e[0m'

也可以

grep -P '\e\[1;31m' <<< $'\e[1;31mred\e[0m  \n \e[34mblue\e[0m'

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多