আমি কীভাবে awk এর প্রিন্টফ ফাংশনটি ব্যবহার করতে পারি তা বুঝতে পারি তবে আমি প্রতিটি ক্ষেত্র নির্দিষ্ট করতে চাই না।
উদাহরণস্বরূপ, ধরুন এটি আমার ফাইল:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
আমি এটি ফর্ম্যাট করতে চাই যাতে প্রতিটি রেকর্ডের প্রথম ক্ষেত্রটি সি 11 এর প্রস্থ হয় - প্রথম ক্ষেত্রের দীর্ঘতম ঘর:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
আমি বুঝতে পারি যে আমি নির্দিষ্ট করতে পারি:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
আসুন ধরে নেওয়া যাক আমি জানি যে আমি প্রথম কলামটির প্রস্থ কী হতে চাই, তবে ফাইলটিতে কতগুলি ক্ষেত্র রয়েছে তা আমি জানি না। মূলত আমি এরকম কিছু করতে চাই:
... '{printf "%-3s|", $1}'
... এবং তারপরে বাকী ক্ষেত্রগুলি তাদের মূল ফর্ম্যাটে মুদ্রণ করুন।
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(এসই মন্তব্যগুলি সংক্ষিপ্ত স্থানগুলিকে একের মধ্যে