जवाबों:
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)।