2013년 11월 26일 화요일

리눅스 정렬 명령 (sort) - 정렬 기준

리눅스 정렬 명령 (sort) 의 기본적인 동작 (첫 단어를 이용한 정렬) 은 이곳을 참고.

이 글에서는 첫 단어 (첫 필드) 가 아닌, 다른 단어 (다른 필드) 를 이용하여 주어진 파일을 정렬하는 법을 설명하겠다. (즉, 정렬 기준을 정하는 방법에 대해 설명하겠다.)
이전과 같이, 입력 파일 (people.txt) 은 다음과 같다:

Rammus 420 255 50 335
Lucian 390 230 46 330
Kennen 403 200 47 335
Darius 426 200 50 340
Anivia 350 257 48 325
Ezreal 350 235 47 325
Aatrox 395   0 55 345
Graves 410 255 51 330
Draven 420 240 47 330
두 번째 필드 (420, 390, 403, 426, 350, ...) 로 정렬하고 싶다면:
sort -k2,2 people.txt
결과는:
Anivia 350 257 48 325
Ezreal 350 235 47 325
Lucian 390 230 46 330
Aatrox 395   0 55 345
Kennen 403 200 47 335
Graves 410 255 51 330
Draven 420 240 47 330
Rammus 420 255 50 335
Darius 426 200 50 340
두 번째 필드를 기준으로 정렬된 것을 볼 수 있다.

위의 명령을 보면, sort-k2,2 플래그를 붙인 것을 알 수 있다.
이 플래그의 뜻은 다음과 같다:

  • k는 "key"를 의미한다. 즉, "정렬 기준으로 삼을 키는 다음과 같다"라는 의미.
  • 2,2는 "두 번째 필드부터 두 번째 필드까지의 값" (즉, 그냥 "두 번째 필드의 값") 을 정렬 기준으로 삼겠다는 뜻.

참고로, -k2,3 를 이용하면, 두 번째 필드부터 세 번째 필드까지를 정렬 기준으로 삼는다.
그 결과는:

Ezreal 350 235 47 325
Anivia 350 257 48 325
Lucian 390 230 46 330
Aatrox 395   0 55 345
Kennen 403 200 47 335
Graves 410 255 51 330
Draven 420 240 47 330
Rammus 420 255 50 335
Darius 426 200 50 340
위에 있는 -k2,2의 결과와 비교했을 때, AniviaEzreal의 위치가 바뀐 것을 알 수 있다.

리눅스 정렬 명령에 관한: 이전 글 다음 글