Довольно печатный стол с awk - PullRequest
7 голосов
/ 07 июня 2011

Я хочу напечатать таблицу, которая выглядит следующим образом:

> field1 field2 field3 field4    
> 11.79     7.87    11.79    68   
> .. more numbers

Как я могу сделать так, чтобы заголовки столбцов были расположены таким образом, чтобы они помещались поверх соответствующего столбца?

> field1    field2  field3   field4       
> 11.79     7.87    11.79    68
> .. more numbers

Мой генерирующий скрипт выглядит следующим образом: capture.sh:

  echo 'field1, field2, field3, field4'
  awk '/Capture the tablestuff/{set variables}
  /DONE/ { printf("%5d %8.2f %8.2f %8.2f \n" ,field1, field2, field3, filed4); '

Я действительно хотел бы воздержаться от ascii-форматирования команды echo, если смогу.

Ответы [ 2 ]

23 голосов
/ 07 июня 2011

Как мне сделать так, чтобы подписи для столбцов расположены таким образом, что ставит их на вершину соответствующий столбец?

Использование column.

Пример со страницы man :

   (printf "PERM LINKS OWNER GROUP SIZE MONTH DAY HH:MM/YEAR NAME\n" \
   ; ls -l | sed 1d) | column -t
14 голосов
/ 07 июня 2011

Как насчет этого однострочного:

awk 'BEGIN {printf("%s %8s %8s %8s \n" ,"field1", "field2", "field3", "field4")}
{printf("%6.2f %8.2f %8.2f %8.2f\n", $1, $2, $3, $4)}' input

field1   field2   field3   field4 
 11.79     7.87    11.79    68.00
 11.79     7.87    11.79    68.00
 11.79     7.87    11.79    68.00
 11.79     7.87    11.79    68.00

Т.е. с помощью BEGIN выведите заголовок, а затем напечатайте каждую строку, отформатированную в соответствии с printf, со всеми числами в файле inputздесь предположим 4 на каждой строке и больше ничего.Настройте его на свои нужды ...

...