如何使 grep 结果变成彩色?

如何使 grep 结果变成彩色?

我有一些程序的输出: # php check.php | grep -E "rule_1|rule_4"

我希望等于 rule_1 的结果为红色,等于 rule_4 的结果为蓝色。

这是可能的吗,因为此时此刻,一切都是红色的。

答案1

尝试这个:

alias egrep="grep -E --color=never"

alias egrep-grey="   GREP_COLOR='1;30' grep -E --color=always"
alias egrep-red="    GREP_COLOR='1;31' grep -E --color=always"
alias egrep-green="  GREP_COLOR='1;32' grep -E --color=always"
alias egrep-yellow=" GREP_COLOR='1;33' grep -E --color=always"
alias egrep-blue="   GREP_COLOR='1;34' grep -E --color=always"
alias egrep-magenta="GREP_COLOR='1;35' grep -E --color=always"
alias egrep-cyan="   GREP_COLOR='1;36' grep -E --color=always"
alias egrep-white="  GREP_COLOR='1;37' grep -E --color=always"

php check.php | egrep "rule_1|rule_4" | egrep-red "rule_1|$" | egrep-blue "rule_4|$"

答案2

你不能将grep其用作通用着色工具。例如彩尾可以做你想做的事。

答案3

您可以使用正则表达式解析器来执行此操作,例如柔性。但请记住,有些模式可能以不直观的方式解释(例如,如果您的解析器匹配最长模式而不是最短模式)。例如,模式..1|aaa1和输入aaaa1通常会匹配..1

答案4

查看彩色化.pl,它将为用户定义的字符串打印不同的颜色。

以下是来自 colorize.pl 项目的描述:

Colorize.pl 是一个简短的脚本,它从标准输入读取数据并写入标准输出。与用户搜索字符串匹配的行将使用用户定义的颜色进行着色。命令行选项可用。着色是通过 ANSI 转义码完成的。

在我的 Apple MacBook Pro 上,以下命令将以读取形式打印“login”,并以绿色打印“apple”:

tail /var/log/system.log | colorize.pl +:login +:apple

相关内容