Создание текста с отступом с помощью bash

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

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

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

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

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

start:      hello

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

3 ответов


будет

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

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

Возможно, вам стоит взглянуть на

man fmt

также.


 printf '%7s' 

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

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

так

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

производит

      _hello
      _world

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


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