कई बार एक ही स्ट्रिंग को प्रिंट करने से grep को कैसे रोकें?


15

अगर मुझे निम्नलिखित में से एक फ़ाइल मिलती है:

These are words
These are words
These are words
These are words

... शब्द के लिए These, यह स्ट्रिंग को These are wordsचार बार प्रिंट करेगा ।

मैं एक से अधिक बार आवर्ती तारों को प्रिंट करने से कैसे रोक सकता हूं? अन्यथा, मैं डुप्लिकेट लाइनों को हटाने के लिए grep के आउटपुट में कैसे हेरफेर कर सकता हूं?


क्या मैचों का क्रम आउटपुट में रखा जाना चाहिए? अन्यथा John1024 पोस्ट की गई कमांड काम करेगी।
कोस

जवाबों:


23

यूनिक्स दर्शन में ऐसे उपकरण हैं जो एक काम करते हैं और उन्हें अच्छी तरह से करते हैं। इस स्थिति में, grepवह उपकरण है जो किसी फ़ाइल से पाठ का चयन करता है। यह पता लगाने के लिए कि क्या डुप्लिकेट हैं, एक पाठ को सॉर्ट करता है। डुप्लिकेट को निकालने के लिए, कोई -uविकल्प का उपयोग करता है sort। इस प्रकार:

grep These filename | sort -u

sortकई विकल्प हैं: देखें man sort। यदि आप डुप्लिकेट गिनना चाहते हैं या यह निर्धारित करने के लिए एक अधिक जटिल योजना है कि क्या है या डुप्लिकेट नहीं है, तो सॉर्ट आउटपुट को पाइप करें uniq: grep These filename | sort | uniqऔर manविकल्पों के लिए uniq ' देखें ।


2

उपयोग करना grepऔर एक अतिरिक्त स्विच, यदि आप केवल एक स्ट्रिंग की तलाश कर रहे हैं

grep -m1 'These' filename

से man grep

-m NUM, --max-count=NUM
        Stop reading a file after NUM matching lines.  If the input is
        standard input from a regular file, and NUM matching lines are
        output, grep ensures that the standard input is positioned  to
        just  after  the  last matching  line  before exiting, regardless
        of the presence of trailing context lines.  This enables a calling
        process to resume a search.  When grep stops after NUM matching
        lines, it outputs any trailing context lines.  When the -c or
        --count option is also used, grep does not output a count greater
        than NUM.  When the -v or --invert-match option is also used, grep
        stops after outputting NUM non-matching lines.

या उपयोग awk ;)

awk '/These/ {print; exit}' foo

IMHO सबसे उपयुक्त उत्तर है -m ध्वज। मेरा सुझाव है कि आप इसे अपने उत्तर के शीर्ष पर रखें। बहुत अच्छा जवाब!
सर्गी कोलोडियाज़नी

3
यदि आप रेगेक्स का उपयोग कर रहे हैं तो यह काम नहीं करेगा - यह पहले मैच के तुरंत बाद बंद हो जाएगा, यह सुनिश्चित न करें कि आपको प्रत्येक संभावित मैच में से एक और केवल एक मिलता है।
सीएसवन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.