2012-10-07 41 views
3

我有一個帶有三個段落的文本文件。我想用bash腳本命令以不同的顏色顯示不同的段落。紅色的第1段,藍色的第2段和青色的第3段。打印文本文件顏色的Bash腳本

我設法顯示使用彩色命令行像

echo -e '\E[32;47m Green.'; tput sgr0 

不過,我想分析我的文件,並改變顏色時,有一個新的段落。我希望有一些提示。

回答

5

輸入/tmp/FILEhttp://pastie.org/4928415

腳本

#!/bin/bash 

c=1 
tput setaf $c 
while read a; do 
    [[ $a =~ ^$ ]] && tput setaf $((++c)) 
    echo "$a" 
done < /tmp/FILE 
tput sgr0 

輸出

enter image description here

+0

你只需要修改一個使用它的功能位來顯示想要的顏色。 –

+0

非常感謝!我也可以將這種顏色的輸出轉換爲PDF文件,顏色仍保持不變。再次感謝你! –

4

這裏的一個awk溶液,它使用在顏色設置的陣列的轉彎元素:

BEGIN { nc = split("\33[31;47m \33[34;43m \33[36;40m", colors, " "); 
     c=1; print colors[c] } 
{ print } 
/^$/ { c = 1+(c%nc); print colors[c]} 

[編輯:上述錯誤地增加了段落之間的額外的空行。校正代碼如下:

BEGIN { nc = split("\33[31;47m \33[34;43m \33[36;40m", colors, " "); 
     c=1; printf "%s", colors[c] } 
/^$/ { c = 1+(c%nc); print colors[c]} 
!/^$/ 

!/^$/導致任何非空行打印爲是。 (結束編輯)]。

如果以上內容在文件3-para.awk中且數據在文件3-para.data中,請使用類似awk -f 3-para.awk 3-para.data的命令來獲取如下輸出。 screenshot of script output

爲了更方便使用,定義調用腳本,然後重置顏色爲默認的功能:

tricolor() { 
    awk -f 3-para.awk $1; tput sgr0 
} 

通過(例如)tricolor 3-para.data