다음 형식의 텍스트 파일이 있습니다.
b SN:2
d SN:5
f SN:10
g SN:11
h SN:15
i SA:3
j SN:1
k SN:4
두 번째 열, 실제로는 두 번째 열의 숫자 값을 기준으로 정렬하고 싶습니다. 나는 노력했다 -
$ sort -n -k2,2 file
$ sort -k2.4,2.5n file
하지만 아무것도 작동하지 않는 것 같습니다.
답변1
옵션을 사용하지 않기 때문에 -t
( -b
또는GNU 정렬), 따라서 계산은 선행 공백의 시작 부분부터 시작되어야 합니다. POSIX 정의sort -k 확장 설명처럼:
A field comprises a maximal sequence of non-separating characters and, in
the absence of option -t, any preceding field separator
따라서 다음을 사용해야 합니다.
$ sort -nk2.7 file
j SN:1
b SN:2
i SA:3
k SN:4
d SN:5
f SN:10
g SN:11
h SN:15
그러나 이를 필드 구분 기호로 사용한 :
다음 두 번째 필드를 기준으로 숫자를 정렬할 수 있습니다.
$ sort -t':' -nk2 file
j SN:1
b SN:2
i SA:3
k SN:4
d SN:5
f SN:10
g SN:11
h SN:15
답변2
그냥 네 상황에 맞춰man sort
-t와 -b가 모두 유효하지 않은 경우 필드의 문자 수를 계산합니다. 앞의 공백부터 시작.
그래서
sort -k2.7n file
일을 할 수 있다
힌트!
행부터 계산을 시작하려면 -t
존재하지 않는 문자 허용을 사용하여 행을 필드로 처리할 수 있습니다.
sort -t% -k1.8n file