seq 小数点区切り記号

seq 小数点区切り記号

浮動小数点でコマンドを使用すると、入力seqに点を使用したにもかかわらず、出力に小数点区切り記号で点の代わりにカンマが表示されます。

seq 0.1 0.3 1.3
0,1
0,4
0,7
1,0
1,3

LC_NUMERIC私はこれがロケールが設定されたロケールにリンクされていると思いましたが、に変更してもde_DE.UTF-8問題がen_US.UTF-8解決されず、ポイントを返すまったく同じロケールを持つ別のシステムがあります。たとえば、型が明示的に定義されていてもドットは返されませんが、-f %1.2小数点区切り文字でカンマが返されます。

この動作をどこでどのように変更できますか?特定のシステムで私のスクリプトにエラーが発生しないようにするにはどうすればよいですか?明らかに、すべての出力はtr同様の方法で再処理されない限り、さらなる処理には使用できません。

Mintはドイツ時間帯の英語でインストールされ、他のシステムではRaspianがインストールされます。


編集:locale特定のコンピュータの設定:

"カンマ" 1:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=

「ポイント」1つ:

LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="C.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=

設定はLANGUAGE結果に影響しません。

ベストアンサー1

ロケール自体のエラーを排除するために(再び)生成してde_DE.UTF-8通過en_US.UTF-8しました。

dpkg-reconfigure locales

seq、行動は次のようになります。LC_NUMERIC そして LANG

LC_NUMERIC設定されていない場合/ nullの場合はLANG動作を定義し、そうでない場合はそれぞれLC_NUMERICコンマとドットを切り替えますde_DE.UTF-8en_US.UTF-8


特定のリスク

LANGポイントベースでない値に対して無効/存在しない値を設定すると、locale特殊な場合に動作が混在する可能性があります。

LANG=en_US
#it should be en_US.UTF-8
LC_NUMERIC=de_DE.UTF-8

seq 0.1 0.2 1.3
0.1
0.3
0.5
0.7
0.9
1.1
1,3

それは現れるだけでなく、seq 0.1 0.2 1.4非常seq 0.1 0.2 1.9に奇妙でIMHO非常に危険な行動でもあります。したがって、seqすべてのスクリプトまたは定義されたロケールの移植性に注意してください。

おおよそ推測すると、これは特定のケースのいくつかの手動変更に関連しているようです(参照:https://lists.gnu.org/archive/html/bug-coreutils/2008-09/msg00192.html)


修正する:

ローカライズされた出力形式によるエラーを防ぐために、管理者はスクリプト自体でロケール()を定義することをお勧めしますLC_NUMERIC=C。この動作を変更する予定はありません。 (パッチと共に下のリンクされたスレッドを参照)

間違ったロケール設定によってドットとコンマが混在して出力される問題は、バグとして識別され、管理者によってパッチされました。

https://lists.gnu.org/archive/html/coreutils/2019-02/msg00002.html

おすすめ記事