파일을 정렬하고 싶습니다 :
   D104HN-D104HA      8.320      4.521   1.69e+05 --
   D104HN-D104HB*      8.320      2.823   2.93e+05 --
   A90HB#-A90HA      1.655      4.207   7.12e+05 --
   A90HB#-F91HA      1.653      4.411   8.59e+04 --
   A114HB#-A114HA      1.253      4.098   7.67e+05 --
   A114HB#-R111HA      1.251      3.929   1.76e+05 --
   A114HB#-W110HA      1.253      4.451   3.68e+04 --
   F91HE*-F91HZ      7.237      7.122   7.85e+05 --
     F91HE*-K92HA      7.242      3.910   4.88e+04 --
그리고 이것을 얻으십시오
   A90HB#-A90HA      1.655      4.207   7.12e+05 --
   A90HB#-F91HA      1.653      4.411   8.59e+04 --
   F91HE*-F91HZ      7.237      7.122   7.85e+05 --
   F91HE*-K92HA      7.242      3.910   4.88e+04 --
   D104HN-D104HA      8.320      4.521   1.69e+05 --
   D104HN-D104HB*      8.320      2.823   2.93e+05 --
   A114HB#-A114HA      1.253      4.098   7.67e+05 --
   A114HB#-R111HA      1.251      3.929   1.76e+05 --
   A114HB#-W110HA      1.253      4.451   3.68e+04 --
즉, 행에서 비 공백의 첫 번째 시퀀스의 두 번째 및 다음 문자에서 숫자로 정렬하십시오.
답변
sort -k 1.2bn < file
선행 란크를 무시하고 행의 끝에서 끝나는 st 필드 의 nd 문자로 시작 n하여 key를 순서대로 정렬합니다 (그러나 행의 끝에서 끝나지만 10 진 숫자의 초기 순서 만 고려하는 숫자 정렬에는 문제가되지 않습니다).21b
이 두 줄 사이에 넥타이가 있으면 다음과 같이하십시오.
    F91HE*-K92HA      7.242      3.910   4.88e+04 --
  F91HE*-F91HZ      7.237      7.122   7.85e+05 --
그런 다음 순서는 두 줄을 문자열로 완전히 비교하는 마지막 리조트 정렬을 기반으로합니다.
일부 로케일의 경우 문자열을 비교하기 위해 공백이 먼저 무시됩니다.이 경우 F91은 K92 F이전에 정렬됩니다 (이전 정렬 K). C 로케일과 같은 다른 것들과 함께 공백은 무시되지 않으며 K92는 F91보다 먼저 나타납니다 (앞 공백 정렬 F).
로케일에 관계없이 선행 공백을 무시하는 마지막 리조트 정렬의 경우 다음을 수행 할 수 있습니다.
sort -k 1.2bn -k 1b < file
그건 1b하나의 어휘 라인의 섹션에 (첫 번째 키 관계에) 정렬 할 그 첫 번째 필드는 선행 공백을 무시과 함께 시작됩니다.
