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|
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
.
printf
line from your answer (I'm sure the edit was not made with malicious intent, I'm just trying to clear up the confusion, that is all). p.s., this answer helped me solve a problem I was having in one of my bash scripts, so thanks! –
Murdocca 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"
© 2022 - 2024 — McMap. All rights reserved.
printf
, so you pretty much knew the answer already. Why not check out howprintf
works? – Fuge