与awk的俏丽的打印桌

时间:2011-06-07 08:53:55

标签: awk formatting tabular

我想要打印一个如下所示的表:

> 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 个答案:

答案 0 :(得分:23)

  

我如何安排字幕   colums以某种方式排列   这使他们处于领先地位   各栏?

使用column

man页面的示例:

   (printf "PERM LINKS OWNER GROUP SIZE MONTH DAY HH:MM/YEAR NAME\n" \
   ; ls -l | sed 1d) | column -t

答案 1 :(得分:13)

这个单行怎么样:

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个,没有别的。根据您的需求调整它......