2013-05-30 34 views
3

我想呆子使用逗號來解析數,作爲小數點字符。 所以我設置LC_NUMERICfr_FR.utf-8,但它不工作:呆子浮點數本地化

echo 123,2 | LC_NUMERIC=fr_FR.utf-8 gawk '{printf ("%.2f\n", $1 + 0) }' 
123.00 

的解決方法是指定的選項--posixexport POSIXLY_CORRECT=1但在這種情況下,GNU AWK擴展不可用,例如deletegensub功能:

echo 123,2 | LC_NUMERIC=fr_FR.utf-8 gawk --posix '{printf ("%.2f\n", $1 + 0) }' 
123,20 

是否有可能有GAWK解析數與,作爲小數點不指定 POSIX選項?

回答

3

您正在查找的選項是:

--use-LC-數字

這呆子力解析輸入數據時使用的語言環境的小數點字符。儘管POSIX標準要求此 行爲,GAWK這樣做時--posix生效,默認是 遵循傳統的行爲,使用一段作爲小數點 點,甚至在語言區域的週期不是小數點 字符。此選項覆蓋缺省行爲,沒有--posix選項的 充分嚴厲嚴格。

演示:

$ echo 123,2 | LC_NUMERIC=fr_FR.utf-8 awk --use-lc-numeric '{printf "%.2f\n",$1}' 
123,20 

注:printf是語句不是一個功能,所以不需要括號,我不知道你爲什麼在這裏添加零?

+0

的「+ 0」是要強制從字符串轉換爲數字......但在這裏不是必需的,我猜的printf做吧格式化$ 1作爲數字。 – user1081440

+1

這就是解決方案,非常感謝sudo_O! – user1081440