যদি ইনপুটটি কেবল দুটি কলামই থাকত তবে আমি ব্যবহার করার পরামর্শ দেব column -t
। এটি এখানে বেশ কার্যকরভাবে কাজ করে না যদিও যেহেতু column
ইউটিলিটি কলাম ডিলিমিটার হিসাবে অনেকগুলি স্পেস বা ট্যাবকে বিবেচনা করবে:
$ column -t file1
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
"মাইকেল রড" দুটি কলাম, যাতে একক সারিতে অন্য সারিগুলির চেয়ে এক কলাম বেশি থাকে, যা আউটপুটকে গোলযোগ করে।
আমরা সর্বশেষ কলামের আগে একটি ট্যাব অক্ষর সন্নিবেশ করে এর চারপাশে কাজ করতে পারি এবং তারপরে column
একটি সীমানা হিসাবে ব্যবহার করতে পারি (কেবল):
$ awk '{ $NF = "\t" $NF; print }' file1 | column -t -s $'\t'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
ওওকে, NF
ক্ষেত্রের সংখ্যা (কলাম), এবং $NF
এটি সর্বশেষ ক্ষেত্রের ডেটা। আমি যে স্ক্রিপ্টটি ব্যবহার করছি তা সম্পূর্ণ রেখাটি মুদ্রণের আগে একটি ট্যাব অক্ষর প্রিডেন্ড করে সর্বশেষ ক্ষেত্রের ডেটা পরিবর্তন করে।
যদি আপনার শেল বুঝতে না পারে $'\t'
, তবে আপনি অন্য একটি চরিত্র চয়ন করতে পারেন যা ডেটার অংশ নয়:
awk '{ $NF = "@" $NF; print }' file1 | column -t -s '@'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9