हिट करने के बाद अगली एन लाइन्स को कैसे प्रिंट और प्रिंट करें?


16

मैं एक पाठ फ़ाइल में एक घटना के लिए grep करना चाहूंगा, फिर प्रत्येक घटित घटना के बाद निम्नलिखित एन लाइनें प्रिंट करें। कोई विचार?

जवाबों:


23

ग्रीप में निम्नलिखित विकल्प हैं जो आपको ऐसा करने देंगे (और इसके जैसी चीजें)। आप अधिक जानकारी के लिए मैन पेज पर एक नज़र डालना चाहते हैं:

  • -प्रत्येक मैच के बाद अनुगामी प्रसंग की संख्या को प्रिंट करें। -B और -C विकल्प भी देखें।

  • -B प्रत्येक मैच से पहले प्रमुख संदर्भ की संख्या प्रिंट करें। -ए और -सी विकल्प भी देखें।

  • -C [संख्या] प्रत्येक मैच के आसपास के प्रमुख और पीछे के संदर्भ की संख्या को प्रिंट करें। डिफ़ॉल्ट 2 है और यह -2 ए-बी 2 के बराबर है। नोट: विकल्प और उसके तर्क के बीच कोई व्हाट्सएप नहीं दिया जा सकता है।


7

यदि आपके पास GNU है grep, तो यह -A/ --after-contextविकल्प है। अन्यथा, आप इसके साथ कर सकते हैं awk

awk '/regex/ {p = N}
     p > 0   {print $0; p--}' filename

1
awk '/regex/{p=2} p > 0 {print $0; p--}' filename- काम करता है, तुम्हारा नहीं।
ब्लेडमाइट


3

मिलान लाइनों के बाद एन लाइनें प्रिंट करें

आप लाइनों के मिलान के बाद एन लाइनों को प्रिंट करने के विकल्प के grepसाथ उपयोग कर सकते हैं -A n

उदाहरण के लिए:

$ cat mytext.txt 
  Line1
  Line2
  Line3
  Line4
  Line5
  Line6
  Line7
  Line8
  Line9
  Line10

$ grep -wns Line5 mytext.txt -A 2
5:Line5
6-Line6
7-Line7

अन्य संबंधित विकल्प:

मिलान लाइनों से पहले एन लाइनें प्रिंट करें

-B nविकल्प का उपयोग करके आप मेल लाइनों से पहले एन लाइनों को प्रिंट कर सकते हैं।

$ grep -wns Line5 mytext.txt -B 2
3-Line3
4-Line4
5:Line5

मिलान लाइनों से पहले और बाद में एन लाइनों को प्रिंट करें

-C nविकल्प का उपयोग करके आप लाइनों के मिलान से पहले और बाद में एन लाइनों को प्रिंट कर सकते हैं।

$ grep -wns Line5 mytext.txt -C 2
3-Line3
4-Line4
5:Line5
6-Line6
7-Line7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.