3

,小数点文字としてコンマを使用して数値を解析するように gawk が必要です。だから私は設定LC_NUMERICしましfr_FR.utf-8たが、うまくいきません:

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

解決策は、オプション--posixorを指定することですexport POSIXLY_CORRECT=1が、この場合、GNU awk 拡張機能は使用できません。たとえばdelete、またはgensub関数:

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

,POSIXオプションを指定せずに小数点としてgawk解析番号を持つことは可能ですか?

4

1 に答える 1

3

あなたが探しているオプションは次のとおりです。

--use-lc-数値

これにより、gawk は入力データの解析時にロケールの小数点文字を使用するようになります。POSIX 標準ではこの動作が必要であり、 --posix が有効な場合は gawk もそうしますが、デフォルトでは従来の動作に従い、ピリオドが小数点文字ではないロケールでも小数点としてピリオドを使用します。このオプションは、 --posix オプションの完全な厳格さを除いて、デフォルトの動作をオーバーライドします。

デモ:

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

注:printfステートメントは関数ではないため、括弧は必要ありません。なぜここにゼロを追加しているのかわかりませんか?

于 2013-05-30T09:32:52.603 に答える