Как оставить выравнивание текста в bash? - PullRequest
27 голосов
/ 25 января 2012

Учитывая текст, $txt, как я могу выровнять его по левому краю в Bash.

Пример (ширина = 10):

Если $txt=hello, я хотел бы напечатать:

hello     |

Если $txt=1234567890, я хотел бы напечатать:

1234567890|

Ответы [ 3 ]

44 голосов
/ 25 января 2012

Вы можете использовать команду printf, например:

printf "%-10s |\n" "$txt"

%s означает интерпретировать аргумент как строку, а -10 указывает его выравнивать влево до ширины 10 (отрицательные числа означают выравнивание влево, а положительные числа - вправо).\n требуется для печати новой строки, поскольку printf не добавляет ее неявным образом.

Примечание , man printf кратко описывает эту команду, но fullДокументацию формата можно найти на странице справки по функции C в man 3 printf.

3 голосов
/ 25 января 2012

Вы можете использовать - flag для выравнивания по левому краю.

Пример:

[jaypal:~] printf "%10s\n" $txt
     hello
[jaypal:~] printf "%-10s\n" $txt
hello    
1 голос
/ 25 января 2012

bash содержит printf встроенный

txt=1234567890
printf "%-10s\n" "$txt"
...