2013-02-04 26 views
16

मैं पूंछ को सर्वर स्टार्टअप के लिए थोड़ा और पठनीय बनाने की कोशिश कर रहा हूं। मेरे वर्तमान आदेश स्टार्टअप से जानकारी और डीबग संदेशों के सबसे बाहर फिल्टर:रंगीन पूंछ आउटपुट

tail -F ../server/durango/log/server.log | grep -e "ERROR" -e "WARN" -e "Shutdown" -e "MicroKernel" | grep --color=auto -E 'MicroKernel|$' 

मुझे क्या करना चाहते हैं शिल्प कुछ है कि लोगों का ध्यान जाएगा चेतावनी पीले रंग में और त्रुटि लाल रंग में, और microkernel है हरे रंग में। मैंने बस grep --color = auto कई बार पाइप करने की कोशिश की, लेकिन पाइप में अंतिम आदेश जीवित रहने वाला एकमात्र रंग है।

क्या ऐसा करने के लिए कोई लाइनर है? या यहां तक ​​कि एक बहुत लाइनर?

उत्तर

22

हाँ, यह करने के लिए जिस तरह से होती है। यही है, जब तक आपका टर्मिनल ANSI escape sequences का समर्थन करता है। यह सबसे टर्मिनल है जो मौजूद है।

मुझे लगता है कि मुझे यह समझाने की आवश्यकता नहीं है कि grep, sed आदि बिंदु कैसे सही है?

kent$ echo "WARN 
ERROR 
foo"|sed 's#WARN#\x1b[33m&#; s#ERROR#\x1b[31m&#; s#foo#\x1b[32m&#' 

नोट:

, नीचे देखें इस कर देगा

WARN yellow 
ERROR red 
foo green 

यहाँ उदाहरण है \x1bESC चरित्र के लिए हेक्साडेसिमल है (^वीEsc) ।

परिणाम देखने के लिए:

enter image description here

+4

जोड़ें "^ [[0m" तुरंत एंपरसैंड (&) 'sed' आदेश में करने के बाद अगर आप केवल मेल खाने वाला कीवर्ड, नहीं पूरी पंक्ति colorize चाहता हूँ। – chepner

+0

@chepner u r right। अच्छी टिप्पणी – Kent

+3

मैंने ऑनलाइनर को कॉपी/पेस्ट करने के लिए कुछ आसान संपादित किया। – sehe

0

मुझे लगता है कि मैं काट दिया इस का एक संस्करण का उपयोग करें: python log watcher

6

मैं इस साल पहले के लिए a script लिखा था। आप highlight के लगातार आमंत्रण को एक-दूसरे से पाइप करके आसानी से कई रंगों के मामले को कवर कर सकते हैं।

README से:

Usage: ./highlight [-i] [--color=COLOR_STRING] [--] <PATTERN0> [PATTERN1...] 

This is highlight version 1.0. 

This program takes text via standard input and outputs it with the given 
perlre(1) pattern(s) highlighted with the given color. If no color option 
is specified, it defaults to 'bold red'. Colors may be anything 
that Perl's Term::ANSIColor understands. This program is similar to 
"grep --color PATTERN" except both matching and non-matching lines are 
printed. 

The default color can be selected via the $HIGHLIGHT_COLOR environment 
variable. The command-line option takes precedence. 

Passing -i or --ignore-case will enable case-insensitive matching. 

If your pattern begins with a dash ('-'), you can pass a '--' argument 
after any options and before your pattern to distinguish it from an 
option. 

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

  • कोई संबंधित समस्या नहीं^_^