यह मानते हुए कि यह संरचित है कि यह हमेशा से पहले और उसके बाद की रेखा है, आप चाहते हैं कि आप grep का उपयोग कर सकते हैं -A
(बाद में) और -B
(पहले) स्विच को यह बताने के लिए कि मैच से पहले 1 पंक्ति और उसके बाद 1 पंक्ति शामिल करें:
$ grep -A 1 -B 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
यदि आप खोज शब्द से पहले और बाद में समान संख्या रेखाएँ चाहते हैं, तो आप -C
(संदर्भ) स्विच का उपयोग कर सकते हैं :
$ grep -C 1 "42B" sample.txt
Pseudo name=Apple
Code=42B
state=fault
यदि आप कई लाइनों से मेल खाते हुए और अधिक कड़े होना चाहते हैं, तो आप कई लाइनों के pcregrep
पैटर्न का मिलान करने के लिए टूल का उपयोग कर सकते हैं :
$ pcregrep -M 'Pseudo.*\n.*42B.*\nstate.*' sample.txt
Pseudo name=Apple
Code=42B
state=fault
उपरोक्त पैटर्न निम्नानुसार मेल खाता है:
-M
- कई लाइनें
'Pseudo.*\n.*42B.*\nstate.*'
- स्ट्रिंग्स के एक समूह से मेल खाता है, जहां पहली स्ट्रिंग शब्द के साथ शुरू होता है, "Pseudo"
जिसके बाद किसी भी वर्ण को पंक्ति के अंत तक रखा जाता है \n
, उसके बाद किसी भी वर्ण को तब तक ऊपर रखा जाता है जब तक कि स्ट्रिंग "42B"
किसी भी वर्ण द्वारा पंक्ति के अंत तक ( \n
), स्ट्रिंग द्वारा पीछा किया जाता है। "state"
किसी भी वर्ण द्वारा पीछा किया।