AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 39782
Accepted
Jimmy
Jimmy
Asked: 2009-07-14 02:20:46 +0800 CST2009-07-14 02:20:46 +0800 CST 2009-07-14 02:20:46 +0800 CST

通过正则表达式对终端进行全局着色

  • 772

我知道很多程序都使用颜色 - (vim、ack、color-ls 等等),但仍然有很多情况下你会被黑白卡住。

有一些脚本会根据正则表达式对输出进行着色(即“使任何匹配 'dog' 红色的东西”),但必须使用管道调用这些脚本 - 例如:"> cat myfile | color dog red" 这对任何事情都没有用交互的。

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

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

linux console regex color
  • 6 6 个回答
  • 2537 Views

6 个回答

  • Voted
  1. Best Answer
    Anders Eurenius
    2009-08-05T08:59:26+08:002009-08-05T08:59:26+08:00

    简短的版本是:为什么,是的,您可以像任何其他程序一样通过管道输出 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
    
    • 6
  2. David
    2015-11-14T10:59:08+08:002015-11-14T10:59:08+08:00

    我仍在寻找具有此功能的 linux 终端仿真器,但对于那些在 macOS X 上阅读本文的人:

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

    可能有比这更好的解决方案,但是您可以通过 expect: http://expect.nist.gov/解决一些简单的问题。如果您宁愿避免使用 TCL,则可以使用许多其他编程/脚本语言的期望库。

    通常,TCL 用于自动化交互程序,但也可以使它们交互。

    我会给你一些代码开始,但我自己已经有一段时间没有使用它了。

    • 1
  4. user13723
    2009-07-25T08:34:08+08:002009-07-25T08:34:08+08:00

    我没有解决方案,但我已经考虑过这种程序应该如何运行。你问的不是直截了当的。

    例如,假设您的正则表达式是简单的“花”。1.如果终端输出是“f”“lower”我们应该进行着色。或者使用编辑器,我们首先输入“lower”,然后转到单词的开头并输入“f”。2.如果终端输出是“花”我们应该取消已经执行的着色。3. 如果输出很慢,比如说“花”中所有字符之间有五秒的延迟,我们不应该烦人地停止输出,应该能够立即进行着色。

    该功能应该与终端程序非常紧密地耦合(就像您建议的那样),检查是否有任何指定的正则表达式与当前行匹配,然后进行着色。或者为了让它更有用,我们可以使用一个程序(有点像 /usr/bin/script),它的作用类似于终端设备并跟踪屏幕输出,为此它需要非常了解终端行为;在这种情况下,我们还应该能够用不同的颜色重新显示字符(执行着色并取消已经执行的着色)。

    您提供了不错的小编程想法...

    • 0
  5. LapTop006
    2009-08-03T03:52:40+08:002009-08-03T03:52:40+08:00

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

    您可以使用 grep 执行以下操作:

    grep -C 99999 --color <whatever>
    

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

    • 0
  6. Kalebris
    2019-10-08T10:49:22+08:002019-10-08T10:49:22+08:00

    带有匹配器插件的 urxvt 具有此功能,例如,如果您想更改看起来像电影 IP 地址的字符串的前景(4x3 数字,中间有点),您可以在 .Xdefaults 中包含以下内容:

    URxvt.perl-ext-common: default,matcher
    URxvt.matcher.pattern.1: ([0-9]{1,3}[.]){3}([0-9]{1,3})
    URxvt.matcher.rend.1: fg7
    

    它会实现这一点。您将需要向其中添加更多内容,但它可以工作。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve