データファイルを降順で並べ替えようとしています。データファイルは、タブで区切られた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=
2.3e-12
は、小数点以下の文字が2
であるロケールでは,
と理解されます(de_DE.utf8
を含むほとんどの非英語圏ではそうです)。番号は2,3e-12
と記述する必要があります。
あなたはできる:
LC_ALL=C sort -grk2 < your-file
数字が英語スタイルで解釈されるようにします。
Cロケール(システムで確実に検出される唯一のロケール)では、10進数の基数は.
です(入力に便利です)。
sort
はbash
とは何の関係もないことに注意してください。これは別のコマンドです。 -g
オプションは、GNU _sort
の実装の非標準の拡張です。