Создание текста с отступом с помощью bash - PullRequest
6 голосов
/ 20 января 2009

Я хочу напечатать список на экране в удобочитаемом виде. Я использую цикл, чтобы пройти через каждый элемент и создать новый список, который отформатирован запятыми и переводами строки. Проблема в том, что в первой строке вывода мне нужен заголовок. Например, я хочу напечатать что-то вроде этого:

List: red, green, blue, black, cars,
      busses, ...

Проблема заключается в создании отступа во второй и последующих строках. Я хочу, чтобы отступ был заданной длины. Поэтому проблема сводится к созданию пустой строки заданной длины. То есть мне нужна функция create_empty_line_of_length, которая выводит заданное количество пробелов.

length=5
echo "start:$(create_empty_line_of_length $length) hello"

В этом случае вывод должен быть:

start:      hello

Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

9 голосов
/ 20 января 2009
 printf '%7s' 

Пожалуй, самый эффективный способ сделать это.

Это оболочка, встроенная большую часть времени, и если нет, то / usr / bin / printf существует как запасной вариант от coreutils

так

 printf '%7s%s\n%7s%s\n' '_' 'hello' '_' 'world'

производит

      _hello
      _world

(здесь я использовал _ вместо пробела, но пробел тоже работает, потому что bash понимает '')

6 голосов
/ 20 января 2009

Это будет

yes ' ' | head -7 | tr -d '\n'

Измените "7" на свой номер.

Может быть, вам стоит взглянуть на

man fmt

также.

1 голос
/ 22 января 2009

Не уверен, поможет ли это вам http://unstableme.blogspot.com/2008/12/awk-formatting-fields-into-columns.html

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