Given a text, $txt, how could I left justify it to a given width in Bash?
Example (width = 10):
If $txt=hello, I would like to print:
hello     |
If $txt=1234567890, I would like to print:
1234567890|
                You can use the printf command, like this:
printf "%-10s |\n" "$txt"
The %s means to interpret the argument as string, and the -10 tells it to left justify to width 10 (negative numbers mean left justify while positive numbers justify to the right). The \n is required to print a newline, since printf doesn't add one implicitly.
Note that man printf briefly describes this command, but the full format documentation can be found in the C function man page in man 3 printf.
You can use the - flag for left justification.
[jaypal:~] printf "%10s\n" $txt
     hello
[jaypal:~] printf "%-10s\n" $txt
hello
                        Bash contains a printf builtin:
txt=1234567890
printf "%-10s\n" "$txt"
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With