Awk - 在列之间添加特定数量的空格

EA0*_*A00 1 awk

我的输入文件包含空间均匀的列,如下所示:

X a b C D
Run Code Online (Sandbox Code Playgroud)

如何使用awk指定列之间的空格数,以便我得到这样的结果:

X     a b    C         D
Run Code Online (Sandbox Code Playgroud)

我知道如何使用awk计算列之间的空格,我只是不知道如何添加这些空格以获得我想要的布局.有什么建议?

kar*_*kfa 5

awk

$ echo "X a b C D" | awk '{printf "%-6s%-2s%-5s%-9s%s\n", $1,$2,$3,$4,$5}'

X     a b    C        D
Run Code Online (Sandbox Code Playgroud)

或者直接使用printf

$ echo "X a b C D" | xargs printf "%-6s%-2s%-5s%-9s%s\n"
X     a b    C        D
Run Code Online (Sandbox Code Playgroud)