2014-11-22 49 views
6

我想在bash腳本中使用grep來查找文件中的匹配行,用顏色突出顯示匹配項,然後使用column命令將結果打印到表中。事情是這樣的:如何在將變量或管道存儲到另一個命令時保留grep顏色?

data=`cat file.data | egrep -i --color "$search"` 
echo $'\n'"col1"$'\t'"col2"$'\t'"col3"$'\t'"col4"$'\n'"$data" | column -t -s$'\t' 

根據需要,除了的顏色丟失上面的代碼做的一切。


下面是一個簡化的例子:

enter image description here

正如你可以看到,當我用grep結果被打印在各行和在顏色,但是當我的結果保存到變量中然後打印出變量,斷行和顏色消失。


有什麼辦法來做我在問什麼?

回答

5

使用選項--color=always

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

默認情況下,grep不會產生顏色,除非輸出直接轉到終端。這通常是一件好事。選項--color=always將覆蓋該選項。

對於不需要顏色的場合,請使用--color=never

相關問題