如何用awk对齐列

时间:2018-08-19 07:57:14

标签: awk

我试图执行以下命令:

ls -ltr | awk 'BEGIN { print "File\t\t\tOwner"} { print $9,"\t",$3} END {print "-DONE \n"}'

并关注o / p

File                    Owner

inventory-shipped        root
BBB_list         root
marks    root
test_file        root
awkvars.out      root
1        root
t12      root
-DONE

我如何获得

File                    Owner

inventory-shipped       root
BBB_list                root
marks                   root
test_file               root
awkvars.out             root
1                       root
t12                     root
-DONE       

1 个答案:

答案 0 :(得分:2)

除了最后一列,您需要使用填充。由于您只有2列,因此第一列就足够了。

使用printf代替print时,可以基于模板打印所有变量。以下示例在右侧(%s)上打印带有填充(24)的字符串(-24),因此它变成%-24s

ls -ltr | awk 'BEGIN {printf "%-24s%s","File","Owner"} { printf "%-24s%s\n",$9,$3} END {print "-DONE \n"}'

有关更多信息,您可以检查thisthis