科学表記法のデータに対して、「sort -g」は期待どおりに機能しません。

科学表記法のデータに対して、「sort -g」は期待どおりに機能しません。

データファイルを降順に並べ替えようとしています。データファイルは、タブで区切られた3つの列で提供されます。 3番目の列は降順でソートしたいと思います(3番目の列は指数値の科学的表記法として提供されます)。

cat eII_surf.txt | sort -gr -k3

とにかく、これは古いコンピュータでは動作しましたが、新しいコンピュータではまったく動作しないようです。

簡単な例は次のとおりです。

cat test.txt:

6.7 2.3e-12
5.0 3.4e-18
4.5 5.6e-16
4.2 2.1e-15
4.0 2.9e-17
2.4 2.5e-15
1.0 1.0e-17
0.5 1.0e-18

そしてcat test.txt | sort -gr -k2

4.5 5.6e-16
5.0 3.4e-18
6.7 2.3e-12
4.2 2.1e-15
4.0 2.9e-17
2.4 2.5e-15
1.0 1.0e-17
0.5 1.0e-18

これは次の出力ですlocale

LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC=de_DE.utf8
LC_TIME=de_DE.utf8
LC_COLLATE="en_US.utf8"
LC_MONETARY=de_DE.utf8
LC_MESSAGES="en_US.utf8"
LC_PAPER=de_DE.utf8
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT=de_DE.utf8
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

ベストアンサー1

2.3e-12210進数の基数文字が存在するロケールに数字を書く必要があることが理解されます,(あなたを含むほとんどの英語以外の世界のように)。de_DE.utf82,3e-12

次のことができます。

LC_ALL=C sort -grk2 < your-file

数字が英語スタイルで解釈されるようにします。

Cロケール(すべてのシステムで見つけることができる唯一のロケール)では、小数点の下数は.(便宜上)です。

sortとは何の関係もなく、bash別々のコマンドであることに注意してください。この-gオプションはGNU実装の非標準拡張ですsort

おすすめ記事