是否有可能每三个数字用逗号分隔数字,并且只能在Unix命令中进行四舍五入?

时间:2013-07-19 05:56:29

标签: unix csv sed command

在以下CSV文件中:

name, number, value
Mike, 1000, 21.555522
Justin, 1001, 32.113
Josh, 1002, 998.2101

将它转换为以下文件是否可行?

name    number    value
Mike    1,000    21.6
Justin    1,001    32.1
Josh    1,002    998.2

请注意,第二个文件现在是制表符分隔文件,因为第二列现在用逗号分隔,因此不能再用作CSV文件。另外,我想在一个小数点处舍入第三列的值。我想只在Unix命令中处理这些任务,因为我不想为这样一个微不足道的问题编写Python代码...我认为cutsed使其可行,但是在我搜索时没有得到任何答案......所以请帮助我得到我想要的东西。

感谢。

1 个答案:

答案 0 :(得分:1)

awk -F, 'NR==1 { printf "%s\t%s\t%s\n", $1, $2, $3 }
         NR!=1 { printf "%s\t%'\''d\t%.1f\n", $1, $2, $3 }'

序列'\''在格式字符串中嵌入单引号。 %'d将逗号放入输出中。

name     number  value
Mike    1,000   21.6
Justin  1,001   32.1
Josh    1,002   998.2

在Mac OS X 10.8.4上测试;因人而异。 (数字和值标题上的奇数对齐是因为数据文件中逗号之后的空格。)