![두 번째 키를 무시하고 패턴 정렬](https://linux55.com/image/79078/%EB%91%90%20%EB%B2%88%EC%A7%B8%20%ED%82%A4%EB%A5%BC%20%EB%AC%B4%EC%8B%9C%ED%95%98%EA%B3%A0%20%ED%8C%A8%ED%84%B4%20%EC%A0%95%EB%A0%AC.png)
그러한 항목이 포함된 파일을 정렬하려고 합니다.
이것은의 출력입니다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
먼저 첫 번째 필드를 기준으로 숫자순으로 정렬되고, 여러 행에 동일한 필드가 있으면 두 번째 필드를 기준으로 정렬되는 방식으로 끝까지 정렬됩니다. 필요에 맞게 주문을 수정할 수 있습니다.