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

Awk-在列之间添加特定数量的空格,awk,Awk,我的输入文件中的列空间均匀,如下所示: X a b C D 如何使用awk指定列之间的空格数,以便得到如下结果: X a b C D 我知道如何使用awk计算列之间的空间,我只是不知道如何添加这些空间以获得我想要的布局。有什么建议吗?这就是printf的用武之地: $ echo "X a b C D" | perl -lane 'printf "%-6s%-2s%-5s%-9s%s\n", @F' X a b C D 根据需要调整字

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

X a b C D
如何使用awk指定列之间的空格数,以便得到如下结果:

X     a b    C         D

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

这就是printf的用武之地:

$ echo "X a b C D" | perl -lane 'printf "%-6s%-2s%-5s%-9s%s\n", @F'
X     a b    C        D

根据需要调整字段宽度。

这就是printf的用武之地:

$ echo "X a b C D" | perl -lane 'printf "%-6s%-2s%-5s%-9s%s\n", @F'
X     a b    C        D
根据需要调整字段宽度。

使用
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
或者直接使用printf

$ echo "X a b C D" | xargs printf "%-6s%-2s%-5s%-9s%s\n"
X     a b    C        D
使用
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
或者直接使用printf

$ echo "X a b C D" | xargs printf "%-6s%-2s%-5s%-9s%s\n"
X     a b    C        D