입력 내용을 정렬하는 linux sort 명령어 사용법
sort 는 이름 그대로 입력된 내용을 정렬하는 명령어입니다.
기본 정렬 방식은 내림차순(ascending) 이며 -r 옵션으로 오름차순(descending) 방식으로 정렬할 수 있습니다.
다음과 같이 input.txt 이 있을 경우 옵션에 따라서 다양한 정렬 결과를 출력합니다.
정렬
sort 를 옵션없이 실행하면 오름차순으로 정렬합니다.
$ sort input.txt abc Abc ABc apple BALL bat bat
-r 옵션을 사용하면 내림차순으로 정렬할 수 있습니다.
$ sort -r input.txt bat bat BALL apple ABc Abc abc
대소문자 구분 안하기
-f, --ignore-case 옵션을 사용하면 대소문자 구분을 안 하게 됩니다
$ sort input.txt -f Abc apple ABc abc BALL bat bat
공백 무시
sort 는 라인 시작에 공백이 있을 경우 공백 문자도 포함해서 정렬합니다. -b, --ignore-leading-blanks 옵션을 사용하면 공백을 무시하게 됩니다.
$ sort input.txt -f -b Abc ABc abc apple BALL bat bat
필드 분할 및 정렬
/etc/passwd 파일같이 라인이 필드로 구분되어 있고 여기서 특정 필드를 기준으로 정렬해야 하는 경우가 있습니다.
예로 아래의 명령은 라인의 맨 앞이 사용자의 id 이므로 id 로 정렬합니다.
$ sort /etc/passwd adm:x:3:4:adm:/var/adm:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin
하지만 4번째 필드인 group id 로 정렬해야 할 경우 필드를 지정하는 옵션인 -t 와 정렬할 key 를 지정하는 옵션인 -k 를 사용하면 sort 는 해당 필드를 기준으로 정렬합니다.
-t 뒤에는 구분자 지정하며 /etc/passwd 파일의 경우 구분자가 : 이며 -t: 으로 사용하면 됩니다. -k 옵션뒤에는 정렬한 키를 지정하는데 4n 은 4번째 컬럼을 numeric 으로 비교하겠다는 의미입니다.
$ sort -t: -k 4n /etc/passwd halt:x:7:0:halt:/sbin:/sbin/halt operator:x:11:0:operator:/root:/sbin/nologin root:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync
다음 명령은 사용자의 홈 디렉터리를 기준으로 정렬합니다.
$ sort -t: -k 6 /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin ec2-user:x:1000:1000:Cloud User:/home/ec2-user:/bin/bash root:x:0:0:root:/root:/bin/bash