将零填充到 CSV unix/Linux 文件中的列

use*_*066 2 unix linux scripting awk sed

我需要更新 CSV linux/unix 数据文件中的一列。CSV 文件大约有 7 列,需要更新第 6 列并使其具有 4 位数字值。第 6 列的数字少于 4 位,但我需要通过在它们前面填充 0 来使所有值都具有 4 位。

是否有任何 awk 或 sed 命令可以将文件中的列值更新为 4 位数字?

510;1093424;0;4485;C;12;109-04-115
510;109324;0;4485;C;1232;109-04-1151
510;109342;0;4485;C;1;109-04-1151
510;10424;0;4485;C;12;109-04-115
Run Code Online (Sandbox Code Playgroud)

假设示例文件如上,我需要第 6 列为 4 位数字,并在其前面添加零,如下所示:

510;1093424;0;4485;C;0012;109-04-115
510;109324;0;4485;C;1232;109-04-1151
510;109342;0;4485;C;0001;109-04-1151
510;10424;0;4485;C;0012;109-04-115
Run Code Online (Sandbox Code Playgroud)

任何建议都会有帮助

问候 HG

Bar*_*mar 5

awk可以使用sprintf添加零填充:

awk -F';' -v OFS=';' '{$6 = sprintf("%04d", $6); print}' input.csv > output.csv
Run Code Online (Sandbox Code Playgroud)

演示版