是否可以通过颜色分隔STDOUT上下文?

时间:2018-01-08 10:24:17

标签: bash colors diff

我使用优秀软件包icdiffhttps://github.com/jeffkaufman/icdiff)的输出来检查更新的文件迭代之间的差异。我想解析一下这些重大差异。从包--help开始,我无法看到任何内置选项(并且在github问题页面上我已经发布并且已经发布了'以查看它是否可以添加或我错过了什么)。

这让我想知道一个hacky解决方案是否可以用它们的颜色来解析线条,因为它们也按照差异的严重程度进行了颜色编码。在bash中这是否完全可以? (也欢迎其他方法!)

这是输出的一个示例(我只能在这里添加图片,因为标记不会显示颜色)。我想获得整条线为红色/绿色的线条。原谅一些屏幕包装,我的显示器不够宽,文字已经够小了。

enter image description here

2 个答案:

答案 0 :(得分:1)

你可以在ANSI转义序列上进行grep,例如(红色为31):

grep '^[\[31m'     # make the escape character (^[) by typing ctrl+v ESC

但是如果没有发送到终端,你需要确保你的输出保持颜色:(当输出不是终端时,许多程序将输出B& W - 你可以用较少的检查,这将显示你的逃脱序列)

答案 1 :(得分:1)

使用GNU Grep,例如

pm.playblast(query = True, format = 'qt', compression  = True)

以红色提取文字,

  • grep -Po $'\e\[31m\K.*(?=\e\[\d+m)' 保持左侧外线比赛,就像一个后卫
  • \K lookahead断言0长度匹配