使用正则表达式对终端进行全局着色

使用正则表达式对终端进行全局着色

我知道许多程序使用颜色 - (vim、ack、color-ls 等等)但是在很多情况下你只能使用黑白。

有一些脚本会根据正则表达式为输出添加颜色(例如“将与‘dog’匹配的任何东西都变成红色”),但是这些脚本必须通过管道来调用 - 例如:“> cat myfile | color dog red”,这对于任何交互式操作都是没用的。

我正在寻找一种可以挂接终端仿真器(或实际执行此操作的终端)并为与给定正则表达式匹配的所有内容着色的东西,与我当前使用的 shell 或程序无关。如果这也适用于 ncurses,那就太棒了。我有太多单色程序,如果我可以指定一个关键字列表,在出现或输入时突出显示/着色,那就太好了。

我使用 Guake 控制台,它可能使用 GNOME 终端,我不知道 GNOME 是否已经具有此功能。

答案1

简短版本如下:是的,您可以像任何其他程序一样从 shell 管道输出。

从那里,你可以使用任何你喜欢的东西,比如说

$ bash | sed "$(echo -e "s@dog@\e[31mdog\e[0m@g; s@more here@more here@g;")"

我想添加我的“彩虹”。享受:

for((b=0;$b<8;b++)); do echo -ne "\e[4${b}m4$b : "; \
  for((f=0;$f<8;f++)); do echo -ne "\e[3${f}m3${f}"; done; echo -e "\e[0m"; done

答案2

我仍在寻找具有此功能的 Linux 终端仿真器,但对于使用 macOS X 的用户来说:

  • 得到iTerm2(如果您在 OS X 上进行大量命令行工作,您无论如何都会需要它),转到“设置 > 配置文件 > 高级”,然后单击“触发器”下的“编辑”。在那里,您可以使用正则表达式添加触发器,^.*\[ERROR\].*$并将操作设置为“突出显示文本”,将参数设置为“红色前景”。

答案3

可能有比这更好的解决方案,但您可能能够使用以下期望解决一些简单的问题:http://expect.nist.gov/。如果您不想使用 TCL,还有许多其他编程/脚本语言可用的预期库。

一般来说,TCL 用于自动化交互式程序,但也可以使其具有交互式。

我想给你一些代码来开始,但我自己已经很长时间没有用过它了。

答案4

我很确定 KDE Konsole(至少是 KDE3 版本)可以做到这一点,但是我没有看到 KDE4 中的支持。

使用 grep 执行以下操作:

grep -C 99999 --color <whatever>

这应该突出显示匹配项,但具有太多上下文以成为整个文件。

相关内容