如何在变量或管道中存储另一个命令时保留grep颜色?

时间:2014-11-22 21:11:46

标签: linux bash

我想在bash脚本中使用grep来查找文件中的匹配行,使用颜色突出显示匹配项,然后使用{{1}在表格中打印出结果命令。像这样:

column

上面的代码按照需要执行所有操作,除了颜色丢失。


这是一个简单的例子:

enter image description here

正如您所看到的,当我使用data=`cat file.data | egrep -i --color "$search"` echo $'\n'"col1"$'\t'"col2"$'\t'"col3"$'\t'"col4"$'\n'"$data" | column -t -s$'\t' 时,结果会打印在单独的行和颜色上,但是当我将结果保存到变量然后打印变量时,换行符和颜色都消失了


有什么方法可以做我要问的事吗?

1 个答案:

答案 0 :(得分:5)

使用选项--color=always

data=$(egrep -i --color=always "$search" file.data)

默认情况下,除非输出直接发送到终端,否则grep不会产生颜色。这通常是件好事。选项--color=always会覆盖该选项。

对于不想要颜色的情况,请使用--color=never