タブで区切られたファイルの2番目の列に基づいてファイルを並べ替える[閉じる]

タブで区切られたファイルの2番目の列に基づいてファイルを並べ替える[閉じる]

重複する可能性がありますが、タブ区切りのファイルがあり、2番目の列(浮動小数点値)に基づいてファイルを並べ替える必要があります。

sort -s -k2,2gr -t$'\t'

コードは、タブで区切られたファイルの2番目の列に基づいて逆順にのみソートすることを示しています。しかし、私は間違った答えを得ました。

答え1

検査の結果、私の使用法の提案は-n正確でした。

$ for i in {1..10}; do printf "%s\t%s\t%s\n" $RANDOM $(python3 -c "print($RANDOM / $RANDOM)") $RANDOM; done | sort -n -t'        ' -k2
29712   0.03716599507061539 950
2107    0.08032908116102791 1738
27575   0.37469985135495676 9831
16029   0.6201534733441034  18426
10659   0.7227198549410698  19929
1175    0.8913083459006143  24232
27187   1.1602447494625434  7016
6047    1.6342058354442255  17419
25561   2.026578073089701   4270
21636   14.603404255319148  17159

サンプルデータは次のようにうまく機能します-n

$ sort -n -t$'\t' -k2 test.txt -r | column -t -s$'\t'
Austin, Texas        50.2  68.3  84.2  70.6  33.65  85   0.9   62/58
Baton Rouge, La.     50.1  66.6  81.7  68.1  63.08  110  0.2   52/46
Atlanta, Ga.         42.7  61.6  80.0  62.8  50.20  115  2.1   69/65
Birmingham, Ala.     42.6  61.3  80.2  62.9  53.99  117  1.5   60
Asheville, N.C.      35.8  54.1  73.0  55.2  47.07  126  15.3  39
Albuquerque, N.M.    35.7  55.6  78.5  57.3  9.47   60   11.0  64
Baltimore, Md.       32.3  53.2  76.5  55.4  41.94  115  21.5  53
Atlantic City, N.J.  32.1  50.6  75.3  55.1  40.59  113  16.2  60/54
Boise, Idaho         30.2  50.6  74.7  52.8  12.19  89   20.6  64
Bridgeport, Conn.    29.9  48.9  74.0  54.7  44.15  119  26.2  55/49
Boston, Mass.        29.3  48.3  73.9  54.1  42.53  127  42.8  52/66
Billings, Mont.      24.0  46.1  72.0  48.1  14.77  96   56.9  69
Albany, N.Y.         22.2  46.6  71.1  49.3  38.60  136  64.4  57
Anchorage, Alaska    15.8  36.3  58.4  34.1  16.08  115  70.8  39/60
Bismarck, N.D.       10.2  43.3  70.4  45.2  16.84  96   44.3  64

1 つのフィールドにのみ並べ替え順序を指定すると、並べ替えられたフィールドに同点がある場合に問題が発生する可能性があります。

関連情報