ग्रीप का उपयोग करना; मैं किसी पैटर्न की Nth घटना कैसे दिखा सकता हूं


1

का उपयोग करते हुए grep; मैं कैसे दिखाऊं एन वें एक पैटर्न की घटना

उदाहरण के लिए; man sh |grep -A3 -- '-c' कई मैचों में वापसी करेंगे।

मैं अलग करना चाहते हो सकता है 3 तृतीय केवल घटना, ताकि यह पता चले:

--
    -c  Read commands from the command_string operand instead of from the standard input.  Special parameter 0
        will be set from the command_name operand and the positional parameters ($1, $2, etc.)  set from the
        remaining argument operands.
-- 

जवाबों:


2

घटना जो आप चाहते हैं वह नहीं है दूसरा घटना; यह है तीसरा । की तीसरी घटना प्राप्त करने के लिए -c संदर्भ की तीन पंक्तियों के साथ:

$ man sh | awk '/-c/{n++; if (n==3)f=3;} f{print;f--;}'
           -c               Read commands from the command_string operand instead of from the standard input.  Special param‐
                            eter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.)
                            set from the remaining argument operands.

यह काम किस प्रकार करता है

awk संक्षेप में लाइन द्वारा इसकी इनपुट लाइन पढ़ता है। यह स्क्रिप्ट दो चर का उपयोग करती है। n हमने कितनी बार देखा है इसका ट्रैक रखें -cf इस बात का ध्यान रखें कि हमें कितनी लाइनों को प्रिंट करना है

  • /-c/{n++; if (n==3)f=3;}

    यदि हम एक लाइन युक्त तक पहुँचते हैं -c, फिर गिनती बढ़ाएँ n एक - एक करके। अगर n तीन है, तो सेट करें f तीन करने के लिए।

  • f{print;f--;}

    अगर f नॉनजेरो है, तो लाइन को प्रिंट करें और डीक्रीमेंट करें f

दूसरा तरीका

$ man sh | grep -A3 -m3 -- -c | tail -n4
           -c               Read commands from the command_string operand instead of from the standard input.  Special param‐
                            eter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.)
                            set from the remaining argument operands.

-m3 विकल्प बताता है कि grep केवल पहले तीन मैचों में वापसी करेगा। tail -n4 उन मैचों के बीच से अंतिम चार लाइनें लौटाता है। अगर दूसरा और तीसरा मैच -c लाइनों की संदर्भ संख्या के भीतर थे, हालांकि, यह आउटपुट वह नहीं हो सकता जो आप चाहते हैं।

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