Как выстроить столбцы, используя paste (1)? или как сделать выравнивание таблицы слияния строк в оболочке? - PullRequest
9 голосов
/ 03 июня 2010

Я хочу объединить линии так, чтобы объединенные линии были выровнены по одной границе. UNIX paste (1) делает это хорошо, когда все линии встречаются на одной границе вкладки, но когда линии различаются по размеру (в файле, в который объединяются строки), текст получается неловким.

Пример пасты (1), которая имеет желаемый эффект:

$ echo -e "a\nb\nccc\nd" | paste - -
a       b
ccc     d

Пример пасты (1) с нежелательным эффектом:

$ echo -e "a\nb\ncccccccccccc\nd" | paste - -
a       b
cccccccccccc    d

Обратите внимание, что 2-й столбец не совпадает. Я хочу, чтобы 'b' совпадало с 'd', что требует дополнительной вкладки. К сожалению, я считаю, что это предел для утилиты вставки, поэтому, если у кого-то есть идеи о том, как получить желаемый эффект выше, я хотел бы услышать его.

Ответы [ 3 ]

10 голосов
/ 03 июня 2010

Проверьте столбец утилита ...

$ echo -e "a\nb\ncccccccccccc\nd" | paste - - | column -t
a             b
cccccccccccc  d
2 голосов
/ 02 августа 2013

См. Ответ здесь для простого способа справиться с этим, когда строки могут содержать пробелы или другие символы, уже использующие команду pr. Например:

pr -m -t -w 200 file1 file2
1 голос
/ 03 июня 2010

Вы можете использовать утилиту printf для создания форматированного вывода, используя те же спецификаторы формата, что и printf . С помощью спецификаторов формата вы можете указать минимальную ширину поля. Например:

printf "%30s%30s\n" "Alpha" "Bravo"
...