使用 awk 选择性地将某些字段的左键归零



我的文件具有以下格式:

1/2/2559,11:58:00,4/1/2559,09:36:04,10,55,My Name

我只想使用 awk 来(除其他外)左垫,只有第 6 列为零。

例如,输出可以是:

My Name,1/2/2559/11:58:00,10,0055,4/1/2559,09:35:04

因此,在上面的示例中,第 5 列和第 6 列都是数字字段,但我只想左边填充其中一个字段。

到目前为止,我从其他帖子中获得的 printf 示例(例如使用 printf ($7,$1,$2,$5,"%04dn",$6,$3,$4) 似乎涵盖了所有字段,或者在到达要左填充的字段时终止当前行。

希望对此提供一些指示,谢谢。

这与您发布的预期输出不匹配,但我看不出您如何从您发布的输入中获得它,所以这可能是您正在寻找的:

$ awk -F, '{printf "%s,%s,%s,%s,%04d,%s,%sn",$7,$1,$2,$5,$6,$3,$4}' file
My Name,1/2/2559,11:58:00,10,0055,4/1/2559,09:36:04

如果没有,请编辑您的问题以解释示例输入和预期输出之间的映射。

还要考虑:

$ awk 'BEGIN{FS=OFS=","} {$6=sprintf("%04d",$6)} 1' file
1/2/2559,11:58:00,4/1/2559,09:36:04,10,0055,My Name

最新更新