我可以使用awk指定放置字符串的列吗?

时间:2014-03-24 09:01:01

标签: sed awk grep

我有一个名为test.txt的制表符分隔文本文件,其中包含多个列,我试图与另一个名为output.txt的文件相同。

test.txt如下所示

    t   m  sx  sy  sz  rx   ry   rz

49.07   0   -1.00   0.00   -0.11   20.00   0.00   -2.18

49.47   0   -1.00   0.00   -0.11   22.00   0.00   -2.33

50.89   0   -1.00   0.00   -0.11   34.00   0.00   -3.21

.
:

42.06  0    29.00   0.00   -2.86   12.00   0.00   -1.44

问题在于,无论我使用什么类型的分隔符,它仍然不会与所需的输出文件具有相同的形式,名为output.txt

在output.txt中,所有这些列都有一个特定的位置,所以

    t        m     sx      sy        sz      rx       ry     rz
Ln1,col1    Ln1,col9    Ln1,col17    Ln1,col25    Ln1,col33  Ln1,col41  Ln1,col49 Ln1,col57 

我对awk,sed和其他大多数unix命令都有点新意。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你试过这样的事吗?

awk -F 'BEGIN{print "t\tm\tsx\tsy\tsz\trx\try\trz"}{print $1"\t"$9"\t"$17"\t"$25"\t"$33"\t"$41"\t"$49}' test.txt

您可以在开头打印标题,然后为每行打印所需的列

答案 1 :(得分:0)

printf的示例:

awk '{for (i=1;i<=NF;i++) printf(\"%-9s\", $i); print}' file

more examples