मैं समझता हूं कि awk के प्रिंटफ फ़ंक्शन का उपयोग कैसे करें, लेकिन मैं हर क्षेत्र को निर्दिष्ट नहीं करना चाहता।
उदाहरण के लिए, मान लें कि यह मेरी फ़ाइल है:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
मैं इसे प्रारूपित करना चाहता हूं ताकि हर रिकॉर्ड का पहला क्षेत्र c11 की चौड़ाई हो - पहले क्षेत्र में सबसे लंबी सेल:
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/'
(यहाँ उन 3 स्थानों को जोड़ने के लिए अतिरिक्त उद्धरण जोड़ें जैसे कि एसई टिप्पणियाँ एक में सन्निहित रिक्त स्थान