2011-09-11 11 views
12

grep कमांड वास्तव में शक्तिशाली है और मैं इसका बहुत उपयोग करता हूं।grep मिलान लाइनों और पड़ोस लाइनों को खोजने के लिए कमांड की तरह

कुछ समय मैं, आवश्यकता ग्रेप अंदर कई कई फाइलों मैं मुश्किल से अपने आप को मैं (उपेक्षा मामले) के विकल्प के साथ मदद कर याद स्ट्रिंग को खोजने के लिए देख के साथ कुछ खोजने के लिए -r (पुनरावर्ती) है और यह भी - v (बहिष्कृत)।

लेकिन मुझे वास्तव में जो चाहिए वह grep से एक विशेष आउटपुट है जो मेलिंग लाइन (ओं) प्लस पड़ोस लाइन (मिलान करने वाली रेखा को देखते हुए मैं देखना चाहता हूं, 2 पहले और 2 बाद की लाइनें)।

क्या इस परिणाम को बैश का उपयोग करने का कोई तरीका है?

+0

साइड नोट पर, आप किस ऑपरेटिंग सिस्टम को चल रहे हैं? उदाहरण के लिए सोलारिस 10 में बहुत सीमित grep है जो ऐसा नहीं कर सकता है। – chotchki

उत्तर

11

सबसे greps "संदर्भ" झंडा यह थोड़ा अधिक पठनीय बनाने की अनुमति देने के क्या करेंगे:

grep --context=3 foo myfile.txt 
+0

महान, यह पहले जवाब के बाद भी स्पष्ट था। और यह वही है जो मैं खोज रहा था। @Gringo Suave, यह आपके-सी विकल्प का गैर अनुबंधित रूप है। – ztank1013

17

Grep ही इस

grep -A 2 -B 2 foo myfile.txt 
+2

और '-C 2' को न भूलें जिसका अर्थ है' -ए 2-बी 2'। –

+0

यह बहुत अच्छी तरह से काम किया, धन्यवाद! और -सी भी! – ztank1013

7

आप छोड़ सकते हैं -सी

grep -2 foo myfile.txt 

के बराबर है
grep -C 2 foo myfile.txt 
संबंधित मुद्दे