मैं फ़ाइल में मिलान रेखा से पहले और बाद में कई लाइनों को फ़िल्टर करना चाहता हूं।संदर्भ के साथ grep invert खोज
यह पंक्ति है कि मैं नहीं चाहता निकाल देगा:
$ grep -v "line that i don't want"
और इस से पहले 2 लाइनों प्रिंट होगा और पंक्ति के बाद मैं नहीं करना चाहता:
$ grep -C 2 "line that i don't want"
लेकिन जब मैं उन्हें गठबंधन करता हूं तो यह लाइन से पहले और बाद में 2 लाइनों को फ़िल्टर नहीं करता है, मैं नहीं चाहता:
# does not remove 2 lines before and after the line I don't want:
$ grep -v -C 2 "line that i don't want"
मैं केवल उस पंक्ति को कैसे फ़िल्टर करूं जो मैं नहीं चाहता, बल्कि इसके पहले और उसके बाद की रेखाएं भी? मुझे लगता है कि sed
इस के लिए बेहतर होगा ...
संपादित करें: मुझे पता है कि यह अजीब/पर्ल/पायथन/रूबी/आदि की कुछ पंक्तियों में किया जा सकता है, लेकिन मैं जानना चाहता हूं कि एक संक्षिप्त है या नहीं एक लाइनर मैं कमांड लाइन से चला सकता है।
sed 'h;:b;$b;N;N;/PATTERN/{N;d};$b;P;D' inputfile
आपने हटाने के लिए लाइनों की संख्या को प्रभावित करने के पैटर्न से पहले N
आदेशों की संख्या भिन्न हो सकते हैं:
http://superuser.com –
क्या कोई कारण है? – aaronstacy