我有一些程序的输出:
# 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