带awk的linux中的分隔列

带awk的linux中的分隔列,awk,Awk,我有一个包含两个字段的文件(df.txt),但第一个字段的大小不同: HOL99001 121112120001121122020112122010202121010100022002021................ 804B 121202011100121121200010200120202220111200011002010.................... WW9 212202021000022111111111201001110001111200020200211......

我有一个包含两个字段的文件(df.txt),但第一个字段的大小不同:

HOL99001 121112120001121122020112122010202121010100022002021................
804B 121202011100121121200010200120202220111200011002010....................
WW9 212202021000022111111111201001110001111200020200211.....................
我使用的程序要求第二个字段必须在不同行的相同位置开始,因此:

HOL99001    121112120001121122020112122010202121010100022002021
804B        121202011100121121200010200120202220111200011002010
WW9         212202021000022111111111201001110001111200020200211
我正在使用

awk '{print $1.8, $2}' df.txt > dfinal.txt 
您可以使用:

gawk '{printf("%8s %s\n", $1, $2)}' df.txt
HOL99001 121112120001121122020112122010202121010100022002021
    804B 121202011100121121200010200120202220111200011002010
     WW9 212202021000022111111111201001110001111200020200211
或:


请提供示例输入和预期输出,以及
$1.8
应该做什么?我在这里支持anubhava先生。很好,你已经以代码的形式展示了你的努力,继续努力。但是输入和预期输出的样本与努力同样重要,您的样本不清楚,请编辑您的问题,然后告诉我们。@anubhava 1.8表示字段1的大小最大为8
awk'{printf'%-8s%s%s',$1,OFS,$2,ORS}文件
。如果平台上有
命令,您可以简单地使用
column-tdf.txt
@johanaramirez GNU awk是gawk,而不是gwak,但是上面的代码应该适用于任何awk。@詹姆斯·布朗对不起,这是一个打字错误,我不知道为什么它不起作用
gawk '{printf("%-8s %s\n", $1, $2)}' df.txt
HOL99001 121112120001121122020112122010202121010100022002021
804B     121202011100121121200010200120202220111200011002010
WW9      212202021000022111111111201001110001111200020200211