如何在shell的日期字段中将零添加到个位数日期

我有如下数据

1213231421312131|USER|21121|1231412|XEM|NAME|NAME|||5072020|2313||||NY|2131|||99|E|||ver.01
6454242352352352|USER|13131|7342422|XEM|NAME|NAME|||13032001|1231||||TX|7312|||11|E|||ver.01
5131242515111233|USER|21212|2314413|XEM|NAME|NAME|||2101979|1231||||TX|7312|||11|E|||ver.01
2341313412341123|USER|62422|1124242|XEM|NAME|NAME|||23111979|1231||||TX|7312|||11|E|||ver.01

我需要如下数据

1213231421312131|USER|21121|1231412|XEM|NAME|NAME|||05072020|2313||||NY|2131|||99|E|||ver.01
6454242352352352|USER|13131|7342422|XEM|NAME|NAME|||13032001|1231||||TX|7312|||11|E|||ver.01
5131242515111233|USER|21212|2314413|XEM|NAME|NAME|||02101979|1231||||TX|7312|||11|E|||ver.01
2341313412341123|USER|62422|1124242|XEM|NAME|NAME|||23111979|1231||||TX|7312|||11|E|||ver.01

所以提交的 10 是一个日期列,我想在日期中添加零... 7 位数到 8 位数。我使用了以下命令,但该命令将管道符号替换为空格。

awk -F "|" '{$10 = sprintf("%08d", $10); print}' <fileName>

请帮我处理这个请求

谢谢你

回答

awk有一个输入字段分隔符和一个输出字段分隔符。该print命令使用后者。所以为了保留|符号,OFS也要设置输出字段分隔符:

awk -F| -v OFS=| '{$10 = sprintf("%08d", $10); print}' yourFile

或者numfmt来自 GNU coreutils(预装在大多数 Linux 系统上)

numfmt -d| --field 10 --format %08f < yourFile


以上是如何在shell的日期字段中将零添加到个位数日期的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>