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