выравнивание текста по правому краю - bash - PullRequest
4 голосов
/ 21 ноября 2010

У меня есть одна проблема. Мой текст должен быть выровнен по ширине вправо. Мне удалось обрезать вывод до нужного размера, но у меня проблема с размещением всего на правой стороне

Вот что я получил:

#!/usr/local/bin/bash

length=$1
file=$2
echo $1

echo -e "length = $length \t  file = $file "
f=`fold -w$length $file > output`
while read line
do
        echo "line is $line"
done < "output"

спасибо

Ответы [ 2 ]

17 голосов
/ 21 ноября 2010

Попробуйте:

printf "%40.40s\n" "$line"

Это выровняет его по ширине 40 справа. Если вы не хотите усечения, отпустите .40 (спасибо Денису!):

printf "%40s\n" "$line"

Например:

printf "%5.5s\n" abc
printf "%5.5s\n" abcdefghij
printf "%5s\n" abc
printf "%5s\n" abcdefghij

напечатает:

  abc
abcde
  abc
abcdefghij
1 голос
/ 21 ноября 2010

Ваш последний шаг может быть

sed -e :a -e 's/^.\{1,$length\}$/ &/;ta'
...