如何用管道添加颜色?

时间:2011-06-10 07:28:35

标签: zsh

我想将命令的输出传递给能够为特定单词的出现着色的东西。

示例: echo“ABC DEF GHI”| magic_color_thing(“DEF”) 应打印 ABC DEF GHI DEF 着色。

我想用ZSH做,我想保留所有的行以及回车。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

如果你有(最新版本的)GNU grep,请使用其--color选项。要让它也打印不匹配的行,请使用与空字符串匹配的模式。

… | grep --color -E '|DEF'

如果您想在zsh中完全执行此操作,请使用颜色代码围绕DEF进行迭代。

autoload colors; colors
while IFS= read -r line; do
  print -r -- "${line//DEF/$fg[red]DEF$fg[default]}"
done

另请参阅How to have tail -f show colored output和其他一些questions tagged color

答案 1 :(得分:3)

echo "...... DEF....." | grep --color "DEF"

为你做这份工作?

如果您更多地了解您所处理的数据类型,那将会有所帮助。

(以及没有匹配的行是否重要)