我有这样的输入数据:
V 0.886 3.768 -2.882
C -0.082 3.768 -3.850
M -0.900 3.769 4.669
F -0.001 3.768 -3.769
我期望输出格式如下:
V 0.886 3.768 -2.882
C -0.082 3.768 -3.850
M -0.900 3.769 4.669
F -0.001 3.768 -3.769
我使用这个命令:awk -v '{print $1, "\t", $2, "\t", $3, "\t", $4}'
但是,它打印出行,而不是队列中的行。
V 0.886 3.768 -2.882
C -0.082 3.768 -3.850
M -0.900 3.769 4.669
F -0.001 3.768 -3.769
该column -t
命令也没有向我显示所需的结果。它显示如下:
V 0.886 3.768 -2.882
C -0.082 3.768 -3.850
M -0.900 3.769 4.669
F -0.001 3.768 -3.769
你能让我知道如何纠正吗?
答案1
看来您想要将数据打印为制表符分隔的列,并且每个数字列应具有格式printf
,%6.3f
即 6 个字符宽的浮点数,具有 3 个小数位(默认情况下右对齐)。
$ awk '{ printf "%s\t%6.3f\t%6.3f\t%6.3f\n", $1, $2, $3, $4 }' file
V 0.886 3.768 -2.882
C -0.082 3.768 -3.850
M -0.900 3.769 4.669
F -0.001 3.768 -3.769
这printf
与格式字符串一起使用%s\t%6.3f\t%6.3f\t%6.3f\n
来打印每组四个字段。第一个字段打印为字符串 ( %s
),而其他字段的格式如上所述。每个字段之间会输出一个制表符 ( ),末尾\t
会有一个换行符 ( )。\n
请注意,这会生成制表符分隔的数据,其中字段用空格字符填充。下面,选项卡^I
在输出中用表示cat -t
:
$ awk '{ printf "%s\t%6.3f\t%6.3f\t%6.3f\n", $1, $2, $3, $4 }' file | cat -t
V^I 0.886^I 3.768^I-2.882
C^I-0.082^I 3.768^I-3.850
M^I-0.900^I 3.769^I 4.669
F^I-0.001^I 3.768^I-3.769