遍历文件并在shell脚本中为文件中的每个数字应用千位运算符

时间:2015-04-15 15:38:13

标签: shell

我的文件abc.txt包含以下内容

CLT_ARAMARK 44294902    21333309    22961593    189.691406  92468
CLT_C2C 11695574    4868496 6827078 279.808594  67159
CLT_CUTTYSARK   2057479 448250  1609229 26.021484   47054

我想要输出如下:

CLT_ARAMARK 44,294,902  21,333,309  22,961,593  189.691406  92,468
CLT_C2C 11,695,574  4,868,496   6,827,078   279.808594  67,159
CLT_CUTTYSARK   2,057,479   448,250 1,609,229   26.021484   47,054

最简单的方法是什么?我需要最少的代码行。

1 个答案:

答案 0 :(得分:1)

您可以使用此awk命令:

awk '{for (i=1; i<=NF; i++) if ($i ~ /^[0-9]+$/) $i=sprintf("%\x27" "d", $i)} 1' file

CLT_ARAMARK 44,294,902 21,333,309 22,961,593 189.691406 92,468
CLT_C2C 11,695,574 4,868,496 6,827,078 279.808594 67,159
CLT_CUTTYSARK 2,057,479 448,250 1,609,229 26.021484 47,054

这遵循这种格式化数字的方法:

awk 'BEGIN{printf "%\x27" ".3f\n", 12345678.901}'
12,345,678.901