Выровнять файл по правому краю - PullRequest
1 голос
/ 12 ноября 2010

Мне нужна функция для правого выравнивания моего файла. Не могли бы вы дать мне подсказку или предложение? Спасибо.

Ответы [ 4 ]

3 голосов
/ 12 ноября 2010
while read line
do
  printf '%80s\n' "$line"
done < infile.txt > outfile.txt
2 голосов
/ 13 ноября 2010

Я могу придумать только один способ ответить на этот вопрос:

 % ./4168932.awk ./4168932.awk        
                      #!/usr/bin/awk -f

                                      {
                           a[++n] = $0;
            if (length(a[n]) > width) {
                   width = length(a[n])
                                      }
                                      }

                                  END {
              format = "%" width "s\n";
    for (line = 1; line <= n; ++line) {
                 printf format, a[line]
                                      }
                                      }
1 голос
/ 13 ноября 2010

Изменить:

На самом деле, вам не нужно переворачивать строки:

printf -v spaces "%80s" " "; man rev | sed "s/^/$spaces/;s/.*\(.\{80\}\)\$/\1/"

Оригинал:

Поменяйте местами линии, добавьте их, обрежьте и верните их обратно.

man rev | rev | sed '1{x;s/^$/          /;s/^.*$/&&&&&&&&/;x};G;s/^\(.\{81\}\).*$/\1/;s/\n//' | rev

Выход:

  REV(1)                    BSD General Commands Manual                   REV(1)

                                                                            NAME
                                          rev — reverse lines of a file or files

                                                                        SYNOPSIS
                                                                  rev [file ...]

                                                                     DESCRIPTION
              The rev utility copies the specified files to the standard output,
        reversing the order of characters in every line.  If no files are speci‐
                                               fied, the standard input is read.

                                                                    AVAILABILITY
           The rev command is part of the util-linux-ng package and is available
                       from ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.

  BSD                             March 21, 1992                             BSD

Вот еще один способ сделать то же самое:

printf -v spaces "%80s" " "; man rev | rev | sed "s/\$/$spaces/;s/^\(.\{80\}\).*$/\1/" | rev
0 голосов
/ 12 ноября 2010

Вам нужно будет определить максимальную длину строки в вашем файле и написать функцию для заполнения строк пробелами этой длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...