【问题标题】:Color specific words in Linux terminal whenever they appear每次出现时,在 Linux 终端中为特定单词着色
【发布时间】:2013-10-18 01:05:20
【问题描述】:

我的终端中运行着一堆脚本(我无法编辑它们),它们将消息输出到终端。我希望我的终端自动为输出中的特定单词着色。

例如,一些脚本在测试失败时输出FAIL。如何配置终端以在此特定单词出现时将其着色为特定颜色(例如红色)。

【问题讨论】:

  • @Jongware:不是重复的;这个问题是关于让终端查找单词并为它们着色,而不是让程序进行彩色输出。 (不过,这对 SO 来说是题外话)。
  • 为什么这被否决了?这是一个很好的问题,虽然我不知道它是否是 SO 的主题;也许它应该迁移到超级用户?
  • 我怀疑这取决于终端模拟器。对于一般情况,可以使用类似screen 的工具来执行此操作。
  • 我在发帖前阅读了“重复”,但不是我要问的,Jongware。

标签: linux colors terminal


【解决方案1】:

自己给单词上色可能比让终端为你上色更容易。如果您无法编辑创建输出的脚本,您可以通过其他方式过滤它们吗?

在最有可能可用的情况下,您可以通过grep 管道输出您的输出:

tail -F logfile | grep --color -P "FAIL|"

这匹配“FAIL”或“”,并突出显示字符串的匹配部分。

您可以进一步使用更专业的东西,例如this blog post 中所述。

【讨论】:

  • 你的意思是,记录输出然后运行 ​​grep ?实际使用 {LINE OF SCRIPT} | grep --color "FAIL" 似乎给了我 FAIL 所在的输出,但不是我需要的。
  • 应该是grep --color -P "FAIL|",这与您在评论中写的略有不同。
  • 是的.. 为了使所有输出都显示在最后,带有彩色单词,必须有一个 |。我有点创造性地使用它,以便只保留我需要的输出行。谢谢!
  • 有些人需要长时间检查 logcats 直到发生某些事情,我认为 OP 正在尝试解决这类问题。
  • -P 在 Mac 上不是有效选项。我使用了:... | egrep --color "FAIL| ",因为我所有的行都包含至少一个空格字符,并且着色这些是不可见的。 egrep "FAIL|" 不起作用:egrep: empty (sub)expression。或者你可以安装 GNU' grep;见stackoverflow.com/a/22704387/432306
【解决方案2】:

如果安装在您的 linux/unix 风格中的 grep 命令没有您可以使用的 -P 参数:

egrep --color "\b(place_here_what_you_are_looking_for)\b|$"

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2014-03-25
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多