這是一個輸出例子我在一些程序得到: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