এখানে কিছু "খাঁটি" awk
সমাধান রয়েছে:
যদি সূচকগুলি সর্বদা আপনার বর্ধিত পূর্ণসংখ্যার ক্রম (6115-6119) হয়, আপনার নমুনা-উপাত্তের মতো, আপনি একটি অ্যালগরিদমিক "শর্টকাট" ব্যবহার করতে পারেন:
awk '{a[$1]=$0} !(NR%4){for(i=6115;i<6119;print a[i++]);}'
এটা করে
- অ্যারেতে সমস্ত লাইন যুক্ত করুন
a
, সূচক পজিশনে বিতরণ 6115-6119
- প্রতি 4 র্থ লাইনে (
!(NR%4)
) এ অ্যারে সামগ্রীগুলি পছন্দসই ক্রমে মুদ্রণ করতে লুপ করুন।
যদি আপনার সংখ্যাসূচক সূচকগুলি সর্বদা চারটি হয় তবে বর্ধমান পূর্ণসংখ্যার ক্রম নয়, আপনাকে বাছাই করতে হবে:
awk '{a[$1]=$0} !(NR%4){asort(a,b); for(i=1;i<5;print b[i++]);}'
দ্রষ্টব্য: এটি জিএনইউ অ্যাডকের সাথে রয়েছে, অন্যরা সমর্থন করতে পারে না asort
।
চারটি ব্লকের যদি পৃথক সংখ্যক আইডি থাকতে পারে:
awk '{a[$1]=$0} !(NR%4){asort(a); for(i=1;i<5;print a[i++]); delete a}'
দ্রষ্টব্য: @ গিলস স্ব-উত্তরdelete
থেকে টিআইএল (+2) এর ব্যবহার (এখনও) পসিক্স নয়, তবে সর্বজনীন সমর্থিত ।
এর সঠিক ™ ব্যবহার সহ একটি সংস্করণ delete
:
awk '{a[$1]=$0} !(NR%4){asort(a); for(i=1;i<5;delete a[i++]){print a[i]}}'
মোছা ছাড়াই একটি সংস্করণ, আরও স্মৃতি এবং মাত্রা ব্যবহার করে:
awk '{a[n][$1]=$0} !(NR%4){asort(a[n]); for(i=1;i<5;print a[n][i++]); n++}