여러 열을 기준으로 하는 Unix 정렬

여러 열을 기준으로 하는 Unix 정렬

유닉스 정렬을 이해할 수 없습니다. 다음 파일을 고려하십시오(탭으로 구분됨).

aa  ~ a1
aa  B
b   A
b   ~ e
bb  B
bb  ~ B

전화를 걸 때:

cat tmp2 | sort -t $'\t' -k1,2

알겠어요

aa  ~ a1
aa  B
b   A
bb  B
bb  ~ B
b   ~ e

내가 이해하는 바에 따르면 -t $'\t' 구분 기호를 공백 대신 탭으로 처리하는 것을 의미하고, -k1,2는 첫 번째 열을 기준으로 정렬을 의미하며, 두 행의 첫 번째 열이 동일한 경우 두 번째 열로 이동하는 것을 의미합니다. 그런데 이 경우 마지막 "b"가 네 번째 줄에 나와야 하는 것 아닌가요?

답변1

아니요, -k1,2첫 번째 필드의 시작 부분부터 시작하여 두 번째 필드의 끝 부분에서 끝나는 줄 부분을 정렬하는 것을 의미합니다.

첫 번째 필드를 정렬한 다음 두 번째 필드를 정렬하려면 다음을 수행합니다.

sort -k1,1 -k2,2

관련 정보