यदि वे वर्ण एकल-बाइट हैं, तो यदि आप किसी ऐसे लोकेल में हैं, जहाँ चार्ट सिंगल-बाइट है (जैसे iso8859-1) या यदि लोकेल का चार्ट UTF-8 है, लेकिन पाठ केवल ASCII है, तो आप कर सकते हैं :
printf -v y %-40.40s "$y"
यह ट्रंकटिंग और पेडिंग दोनों को कवर करेगा।
यदि नहीं, तो आप हमेशा 40 रिक्त स्थान जोड़ सकते हैं और अपने ${y:0:40}दृष्टिकोण का उपयोग कर सकते हैं।
printf -v pad %40s
y=$y$pad
y=${y:0:40}
zsh बाएं और दाएं पैडिंग के लिए समर्पित ऑपरेटर हैं:
y=${(r:40:)y}
(ट्रंकेशन भी करता है)। zshके printfबाइट्स की बजाय अक्षरों में गिना जाता है, इसलिए नहीं होती bashऊपर रों मुद्दा '। हालांकि ध्यान दें कि आपको विकल्प के zshलिए 5.3 या नए की आवश्यकता है -v।
अधिक विवरण के लिए संबंधित प्रश्न का यह उत्तर भी देखें यदि आप उन वर्णों से सामना कर रहे हैं जिनमें सभी की चौड़ाई समान नहीं है।