কলামগুলিতে পাঠ্য বিন্যাস করা


11

নীচে প্রদর্শিত হিসাবে দুটি কলাম সহ আমার কাছে একটি ফাইল রয়েছে (উদাহরণস্বরূপ):

ফাইল 1:

John 1
Peter 2
Michael Rod 3
Su 7
Louise 9

আমাকে এটি ফর্ম্যাট করতে হবে এবং আমার প্রত্যাশিত আউটপুটটি হ'ল:

ফাইল 1:

John        1
Peter       2
Michael Rod 3
Su          7
Louise      9

1
2 কলাম কোথায়?
মার্ক

উভয় আউটপুট একই বলে মনে হচ্ছে। আপনি দয়া করে আপনার প্রশ্নে আরও বিশদ দিতে পারেন?

2
কলাম কীভাবে সংজ্ঞায়িত হয়? নাম এবং সংখ্যাটির মধ্যে কোনও ট্যাব বা অন্য কোনও চরিত্র রয়েছে? আমরা কীভাবে জানতে পারি যে Michael Rod 32 টি কলাম নয় 3 নয়?
terdon

2
না, পাঠ্যের চিত্র পোস্ট করবেন না । আপনাকে সাহায্য করতে সক্ষম হবার জন্য আমি কেবল সেই পাঠ্যটি অনুলিপি করে আটকানো যাচ্ছিলাম এবং এখন আমি পারছি না।
কুসালানন্দ

1
মিতোয়লা এবং টেরডন কি বলেছে; আপনি উদাহরণস্বরূপ উল্লেখ করতে পারেন, এটাই শেষ কলাম যে চাহিদা বেশি ইন্ডেন্টযুক্ত করা দীর্ঘতম লাইনের প্রস্থ জন্য অনুমতি কিভাবে?
জেফ শ্যাচালার

উত্তর:


18

যদি ইনপুটটি কেবল দুটি কলামই থাকত তবে আমি ব্যবহার করার পরামর্শ দেব 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.