2011-06-30 12 views
12

इस फ़ाइल में 3 फ़ील्ड हैं। मैं चाहता था उदा। हरे रंग में पहले 2 क्षेत्रों, और सफेद (एनबी: काले रंग की पृष्ठभूमि) में तीसरा, तो मैं करने की कोशिश की:विभिन्न क्षेत्रों के लिए विभिन्न रंगों के साथ awk के परिणामों को मुद्रित करने के लिए कैसे?

awk '{print "\033[0;32m"$1"\033[0m", "\033[0;32m"$2"\033[0m", "\033[0;37m"$3"\033[0m"} }' chrono.txt 

और सब कुछ हरा था ...

मैं कैसे आगे बढ़ना चाहिए (यदि यह संभव है)?

उत्तर

26

अजीब से रंग आउटपुट प्राप्त करने के लिए, आप इस दृष्टिकोण का उपयोग कर सकते हैं।

function red(s) { 
    printf "\033[1;31m" s "\033[0m " 
} 

function green(s) { 
    printf "\033[1;32m" s "\033[0m " 
} 

function blue(s) { 
    printf "\033[1;34m" s "\033[0m " 
} 

{ 
    print red($1), green($2), blue($3) 
} 
+0

आपको बहुत बहुत धन्यवाद, यह खूबसूरती से काम करता है – ThG

+0

@ThG खुशी है कि मैं मदद कर सकता है :-) –

+7

इन कार्यों से सावधान रहें। वे एक बाहरी स्ट्रिंग का उपयोग प्रारूप विनिर्देशक के रूप में कर रहे हैं। यदि स्ट्रिंग में प्रारूप वर्ण (%, आदि) हैं, तो यह असफल हो जाएगा। 'फ़ंक्शन रेड (स्ट्रिंग) { printf ("% s% s% s", "\ 033 [1; 31m", स्ट्रिंग, "\ 033 [0m") जैसे कुछ बेहतर उपयोग करें; } ' –

0

अजीब कार्यों का उपयोग करने का एक विकल्प शैल चर में रंगों को पार कर रहा है। जैसे

RED='\033[01;31m' 
GREEN='\033[01;32m' 
YELLOW='\033[01;33m' 
BLUE='\033[01;34m' 

echo "Col1 Col2 Col3 Col4" | \ 
awk -v r=$RED -v y=$YELLOW -v g=$GREEN -v b=$BLUE -v n=$NONE \ 
'{printf r$1n y$2n g$3n b$4n "\n"}' 
संबंधित मुद्दे

 संबंधित मुद्दे