3

1234567Unix中数字加逗号,需要改成1,234,567

有可能在sedor中awk吗?如果是这样,请提供一些样品。

4

2 回答 2

6
$ LC_NUMERIC=en_US

$ printf "%'.f" 1234567
1,234,567

jim mcnamara提供:语言环境决定了千位分隔符会发生什么。

$ export LC_NUMERIC="en_US.UTF-8"
$ printf "%'f\n" 1234567.777
1,234,567.777000

$ export LC_NUMERIC=C
$ printf "%'f\n" 1234567.777
1234567.777000

最后一个没有逗号。您的结果没有逗号。你现在明白为什么了吗?区域设置 LC_NUMERIC 设置是您的答案。C 语言环境没有千位分隔符。我猜你的语言环境也没有。

于 2013-02-03T01:15:00.160 回答
0

我用过一次:

echo "1234567890" | \
sed -e ': L
s/\([0-9]\{1,19\}\)\([0-9]\{3\}\)/\1,\2/
t L'

应该管用

http://www.linuxquestions.org/questions/programming-9/format-numbers-using-bash-672031/#post4269148

于 2013-02-03T21:32:18.380 回答