파일을 정렬하고 싶습니다.
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 --
즉, 행에서 공백이 아닌 첫 번째 시퀀스의 두 번째 및 후속 문자를 숫자로 정렬합니다.
답변1
sort -k 1.2bn < file
n
st 필드 의 두 번째k
문자에서 시작하여 선행 공백을 무시하고 행의 끝에서 끝나도록 ey를 숫자로 정렬합니다. 그러나 이는 십진수의 초기 순서만 고려하는 숫자 정렬에는 중요하지 않습니다.2
1
b
예를 들어 다음 두 줄 사이에 동점이 있는 경우:
F91HE*-K92HA 7.242 3.910 4.88e+04 --
F91HE*-F91HZ 7.237 7.122 7.85e+05 --
그런 다음 두 줄을 완전히 문자열로 비교하는 최후의 수단을 기준으로 순서가 정렬됩니다.
일부 로케일의 경우 문자열을 비교할 때 공백이 먼저 무시됩니다. 이 경우 F91이 K92 앞에 나타납니다( F
이전 sort 에서처럼 K
). 다른 로캘의 경우(C 로캘의 경우와 마찬가지로) 공백은 무시되지 않으며 K92는 F91 앞에 표시됩니다(공백은 앞에 정렬됨 F
).
로케일에 관계없이 선행 공백을 무시하는 최후의 수단 정렬의 경우 다음을 수행할 수 있습니다.
sort -k 1.2bn -k 1b < file
이 1b
함수는 선행 공백을 무시하고 첫 번째 필드로 시작하는 줄 부분을 어휘적으로(첫 번째 키의 관계에 따라) 정렬합니다.