घटना जो आप चाहते हैं वह नहीं है दूसरा घटना; यह है तीसरा । की तीसरी घटना प्राप्त करने के लिए -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 हमने कितनी बार देखा है इसका ट्रैक रखें -c। f इस बात का ध्यान रखें कि हमें कितनी लाइनों को प्रिंट करना है
/-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 लाइनों की संदर्भ संख्या के भीतर थे, हालांकि, यह आउटपुट वह नहीं हो सकता जो आप चाहते हैं।