这是一个输出例子我在一些程序得到:Linux的shell:从点更改小数点(浮点)分离,以逗号
$ 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
这就是:在使用逗号,
代替.
如果背后有一个或两个小数字符。
这个假设是,当一些程序使用.
点千分隔,也不会改变,就像在:
$ anotherprogram
Speed.Other.Thing....: 33.112 H/s
$ anotherprogram | decimalcomma
Speed.Other.Thing....: 33.112 H/s
,我认为这可以通过使用SED,AWK,Perl或甚至完成壳扩张,但我不是很有经验。
请问有人能给我一些帮助吗?编辑1:即使这个问题要求解决“点后面的一个或两个数字”作为区分数千个逗号的方法,对于那些到这里感兴趣的人来说,没有这样的限制(并且只要标题可能表明,它不存在),这里是@almas谢赫首次提出(感谢你,孩子)的方法:
sed 's/\([0-9]\)\.\([0-9]\)/\1,\2/g'
当'.'后面有两个以上的十进制字符时失败,如'Speed.Other.Thing ....:33.112 H/s'。 – 2015-01-04 16:21:52
我没有明白吗?当我运行'回声“almas.shaikh .... 2.34 3.2222”|上面的命令'我得到'almas.shaikh .... 2,34 3,2222'我认为是正确的? – SMA 2015-01-04 17:49:40
Original Post proposal:使用逗号',而不是'.',如果它后面有一个或两个十进制字符?“。数字三万可以写成'30000'或'30.000',但'300.00'不会是三万,所以我们可以肯定这个点'。'是一个浮点分隔符,并用','改变它。对不起,问题中的含糊不清。 – 2015-01-04 18:01:35