2番目のキーを無視してパターンを並べ替える

2番目のキーを無視してパターンを並べ替える

そのような項目を含むファイルを並べ替えようとしています。

これはの出力ですhead file.txt | sort -n

1       1       360030.650313113        23.6496749206273
1       2       184005.303709890        12.5819130584254
1       3       51304.4897339131        3.54834660232693
2       1       184005.303709890        12.5819130584254
2       2       176030.554401950        13.7621056226822
2       3       71841.9750474998        6.31576927490416
3       1       51304.4897339131        3.54834660232693
3       2       71841.9750474998        6.31576927490416
3       3       72642.2936524586        9.28260169486644
4       1       12511.6549282967        0.867004812539363

これはの出力ですcat file.txt | sort -n | head

1       100     0.265986106008280       1.948706529813553E-005
1       1000    3.184914160835964E-004  3.067021647295356E-008
1       1001    7.604450718679718E-005  7.326181191420022E-009
1       1002    1.809620185415599E-005  1.743513966528432E-009
1       1003    4.304204593193070E-006  4.147009800188772E-010
1       1004    1.023686141641656E-006  9.863012681974230E-011
1       1005    2.434647501464963E-007  2.345735005737759E-011
1       1006    5.790348098792519E-008  5.578886733501962E-012
1       1007    1.377124338943865E-008  1.326832274761822E-012
1       1008    3.275228617666499E-009  3.155618499463635E-013

見てわかるように、ファイルの小さな部分だけを使用すると、出力が正確に正確にソートされますが、ファイル全体を使用すると、何とか100が1の前に表示されます。指定してみ-k1,2ましたが-k1n,2n役に立ちませんでした。

ファイル全体を1,1;のように並べ替えるにはどうすればよいですか? 1,2, 1,2,000, 2,2, 2,2000;

私のソートバージョンはsort(GNU coreutils)8.21です(該当する場合)。

答え1

フィールドごとに移動できます。

sort -k1,1n -k2,2n -k3,3n -k4,4n file.txt

これにより、sort最初の最初のフィールドに基づいて数値順に並べ替えられ、複数の行に同じフィールドがある場合は、2番目のフィールドに基づいて並べ替えられます。必要に応じて注文を変更できます。

関連情報