【发布时间】:2015-01-04 14:41:30
【问题描述】:
这是我在一些程序中得到的输出示例:
$ reportspeed
Speed.GPU.#*...: 254.4 kH/s
这是另一个例子:
$ reportspeed
Speed.GPU.#*...: 254.43 kH/s
只要在这两种情况下,. 点后面的那一两个 数字 是明显的小数部分,我想将该输出更改为:
$ reportspeed | decimalcomma
Speed.GPU.#*...: 254,4 kH/s
$ reportspeed | decimalcomma
Speed.GPU.#*...: 254,43 kH/s
这是:使用逗号,而不是.,如果它后面有一个或两个十进制字符。
这假设,当某些程序使用. dots for crowds 分隔符时,它不会改变,如:
$ anotherprogram
Speed.Other.Thing....: 33.112 H/s
$ anotherprogram | decimalcomma
Speed.Other.Thing....: 33.112 H/s
我认为这可以通过使用 sed、awk、perl 甚至是 shell 扩展来完成,但我对它不是很有经验。
有人可以帮帮我吗?
EDIT-1:即使这个问题要求解决“点后面的一个或两个数字”作为区分数千个逗号的方法,对于那些到达这里的人来说,没有这种限制(只要标题可以建议它不存在),这是@almas shaikh首先提出的方法(谢谢你,男孩):
sed 's/\([0-9]\)\.\([0-9]\)/\1,\2/g'
【问题讨论】:
标签: linux bash shell floating-point