45

7つのデータフィールドを含むcsvファイルがあります。7番目のフィールドを逆の数値順に並べ替えたい(最小値が最初)。データの7番目のフィールドは次のようになります。

0.498469643137
1
6.98112003175e-10
9.11278069581e-06

私は次のようなUNIXソートツールを使おうとしました。

$ sort -t"," -n -k -r 7 <my_file>

私が抱えている問題は、ソートが指数形式を認識しないことです。たとえば、sortthinks6.98112003175e-10は。よりも大きいと考え1ます。sortを使用してcsv列をソートし、科学的記数法を認識するにはどうすればよいですか?助けてくれてありがとう。

4

4 に答える 4

73

'-g'オプションでソートすると、うまくいくはずです。-gオプションは、ソートに「一般的な数値を使用する」ことを示します

于 2011-09-14T13:42:38.023 に答える
10

ロケールが別の区切り文字を想定している場合があることに注意してください。たとえば、ロシア語のローカリゼーションでは、,文字は''ではなく数値の一部を区切ります.。この場合、LANG変数を考慮する必要があります。

私の場合、LANGがに設定されていたru_RU.KOI8-Rため、sort -g間違った結果が得られました。

于 2013-10-28T11:16:23.903 に答える
3

つまり、使い方がわからない人のために例を挙げてみましょう。「-n」の代わりに「-g」を使用します。 l = 1,0.3,6.01e-10

sort -t$',' -n example.txt

0.3 1 6.01e-10

sort -t$',' -g example.txt

6.01e-10 0.3 1

于 2016-04-04T17:20:56.007 に答える
0
  1. あなたは使用する必要があります-g
  2. 使用しないでください-n

正しいコマンドはsort -g -k7,7 input.txt

于 2019-11-04T04:39:40.120 に答える