দারুণভাবে, আপনি নীচের হিসাবে এটি করতে চাই
awk '/pattern/{nr[NR]; nr[NR+4]}; NR in nr' file > new_file`
অথবা
awk '/pattern/{print; nr[NR+4]; next}; NR in nr' file > new_file`
ব্যাখ্যা
প্রথম সমাধানটি মেলে এমন সমস্ত লাইন সন্ধান করে pattern। এটি কোনও মিল খুঁজে পেলে NRএটি অ্যারেতে রেকর্ড নম্বর ( ) সংরক্ষণ করে nr। এটি NRএকই অ্যারে থেকে 4 র্থ রেকর্ড সংরক্ষণ করে । এটি দ্বারা করা হয় nr[NR+4]। প্রতিটি রেকর্ড ( NR) তারপরে এটি nrঅ্যারে উপস্থিত রয়েছে কিনা তা পরীক্ষা করে নেওয়া হয় , যদি তাই রেকর্ডটি মুদ্রিত হয়।
দ্বিতীয় সমাধানটি মূলত একইভাবে কাজ করে, যখন এটি মুখোমুখি হয় এবং patternএটি সেই লাইনটি মুদ্রণ করে, এবং তারপরে অ্যারেতে 4 তম রেকর্ড সংরক্ষণ করে nr, তারপরে পরবর্তী রেকর্ডে যায়। তারপরে যখন awkএই চতুর্থ রেকর্ডটির মুখোমুখি NR in nrহবে তখন ব্লকটি কার্যকর হবে এবং পরে এই +4 রেকর্ডটি মুদ্রণ করবে।
উদাহরণ
এখানে একটি উদাহরণ ডেটা ফাইল sample.txt,।
$ cat sample.txt
1
2
3
4 blah
5
6
7
8
9
10 blah
11
12
13
14
15
16
1 ম সমাধান ব্যবহার:
$ awk '/blah/{nr[NR]; nr[NR+4]}; NR in nr' sample.txt
4 blah
8
10 blah
14
২ য় সমাধানটি ব্যবহার করে:
$ awk '/blah/{print; nr[NR+4]; next}; NR in nr' sample.txt
4 blah
8
10 blah
14
egrep "pattern" -A4