जवाबों:
grep
आदेश एक को स्वीकार करता है --color=always
, विकल्प तो आप उपयोग कर सकते हैं
grep 'keyword1' file.log --color=always | grep 'keyword2'
जैसा कि gertvdijk बताते हैं , यह आदेश अक्षम हो सकता है, लेकिन यह उन सभी लाइनों को खोजेगा , जिनमें keyword1 और keyword2 दोनों शामिल हैं। यदि आप उन्हें विभिन्न रंगों में उजागर करना चाहते हैं, तो आप उपयोग कर सकते हैं
grep 'keyword1' file.log --color=always | GREP_COLORS="mt=01;34" grep --color=always 'keyword2'
जो नीले रंग में कीवर्ड 2 को उजागर करेगा। mt
भाग का मतलब है कि grep
इस का उपयोग कर मिलान पाठ पर प्रकाश डाला जाएगा सीएसआई कोड , और 01;34
इसका मतलब है "सामान्य पृष्ठभूमि पर बोल्ड नीले अग्रभूमि"।
grep -R --color=always keyword1 . | grep keyword2
काम करना चाहिए। क्या आप फिर से आउटपुट को रीडायरेक्ट कर रहे हैं (जैसे कि दूसरी पाइपिंग grep
करके less -R
)? यदि हां, तो आपको --color=always
दूसरे को भी जोड़ना होगा ।
--color=auto
करने के लिए grep
, बस के बाद दूसरे के लिए आवश्यक होगा 'keyword2'
।
--color=always
जवाब में जोड़ा , क्योंकि आप इसे less
या कुछ को भी पाइप करना चाह सकते हैं ।
उदाहरण के लिए grep
, पाइपिंग के बजाय वास्तविक नियमित अभिव्यक्ति आज़माएं :
grep -E "\<foo\>.*\<bar\>" file
यह उन मेल लाइनों तक सीमित है जिसमें यह कीवर्ड केवल इसी क्रम में मेल खाते हैं, दुर्भाग्य से। वैसे भी, grep
आपके प्रश्न का उपयोग अक्षम है और आपको इससे बचना चाहिए। @DanielH का जवाब शायद आपके मामले के लिए काफी अधिक सरल है।
कीवर्ड के 'या' मिलान के लिए, मैं नियमित रूप से इसका उपयोग करता हूं:
grep -E "(foo|bar)" file
foo.*bar|bar.*foo
कि क्या इस मामले के लिए कोई बेहतर तरीका है , या यदि यह इस मामले के लिए भी आवश्यक है (जो कि एक लॉग फ़ाइल प्रतीत होती है, जो शायद कीवर्ड के लिए एक मानक आदेश होगा)। इससे पहले कि आप अपना अपडेट दें, मैंने अपना जवाब जोड़ दिया, लेकिन मैं इसे इधर-उधर रखूंगा कि ऐसी स्थिति में जहां जंजीर grep
वास्तव में आवश्यक हो (या किसी अन्य समय रंगीन आउटपुट को टर्मिनल पर नहीं भेजा जाना चाहिए, जैसे grep | less -R
)।