How to left justify text in bash?
-
13-11-2019 - |
سؤال
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.
Example:
[jaypal:~] printf "%10s\n" $txt
hello
[jaypal:~] printf "%-10s\n" $txt
hello
bash
contains a printf
builtin
txt=1234567890
printf "%-10s\n" "$txt"
لا تنتمي إلى StackOverflow