Bash: красивая печать с ключом-значением

У меня есть вывод команды в виде пар ключ-значение:

key1: value 1 key2: value 2 ...
key1: long value 1 key2: value 2 ...
key1: val 1 key2: value 2 ...

то, что я хотел бы, это красиво напечатать этот вывод, чтобы ":" были выровнены:

key1: value 1      key2: value 2 ...
key1: long value 1 key2: value 2 ...
key1: val 1        key2: value 2 ...

Спасибо


person liborw    schedule 14.08.2012    source источник


Ответы (1)


Пока вы можете терпеть неправильное размещение ключей, может работать следующее очень простое решение:

cat input | column -t -s ":"

Кстати, если извлечь ключи перед передачей в столбец, вывод будет выглядеть лучше.

Лучших результатов можно добиться с помощью awk, perl или python, однако это возможно в bash, конечно, но скрипт будет больше (я начал, но еще не закончил). Идея проста: использование двух проходов - первый проход вычисляет максимальные смещения для каждого ключа и сохраняет их в массиве, второй путь, основанный на смещениях, вводит точное количество пробелов.

person pmod    schedule 15.08.2012