首页 > 解决方案 > 使用 awk 在 linux 中分隔列

问题描述

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

HOL99001 121112120001121122020112122010202121010100022002021................
804B 121202011100121121200010200120202220111200011002010....................
WW9 212202021000022111111111201001110001111200020200211.....................

我使用的程序要求第二个字段必须从不同行的相同位置开始,因此:

HOL99001    121112120001121122020112122010202121010100022002021
804B        121202011100121121200010200120202220111200011002010
WW9         212202021000022111111111201001110001111200020200211

我在用

awk '{print $1.8, $2}' df.txt > dfinal.txt 

标签: awk

解决方案


你可以使用:

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

或者:

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

推荐阅读