Подтвердить что ты не робот

Как оставить выравнивание текста в bash?

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

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

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

hello     |

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

1234567890|
4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Пример:

[jaypal:~] printf "%10s\n" $txt
     hello
[jaypal:~] printf "%-10s\n" $txt
hello    

Ответ 3

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

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