gpt4 book ai didi

Linux shell : Changing decimal (float) separator from dot to comma

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:15 26 4
gpt4 key购买 nike

这是我在一些程序中得到的输出示例:

$ 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 thousands 分隔符时,它不会被更改,如:

$ 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'

最佳答案

你可以使用这个 sed:

sed -r 's/\.([0-9]{1,2})\b/,\1/g'

测试:

cat file
Speed.GPU.#*...: 254.4 kH/s
Speed.GPU.#*...: 254.43 kH/s
Speed.Other.Thing....: 33.112 H/s

sed -r 's/\.([0-9]{1,2})\b/,\1/g' f
Speed.GPU.#*...: 254,4 kH/s
Speed.GPU.#*...: 254,43 kH/s
Speed.Other.Thing....: 33.112 H/s

PS:在 OSX 上使用:

sed -E 's/\.([0-9]{1,2})[[:>:]]/,\1/g'

关于Linux shell : Changing decimal (float) separator from dot to comma,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com