Linux / 명령어 / sort - 텍스트 행 정렬
sort는 입력 파일의 행을 비교해 정렬된 결과를 표준 출력으로 보냅니다. 이름순 정렬뿐 아니라 숫자, 특정 필드, 역순 정렬이 필요할 때 사용합니다.
sort 명령어란?
기본 정렬은 현재 로케일의 문자 비교 규칙을 따릅니다. 원본 파일은 그대로 두고 결과만 출력하므로 결과를 저장하려면 별도 파일로 리디렉션하거나 GNU -o 옵션을 사용합니다. 재현 가능한 정렬 순서가 중요하면 LC_ALL=C를 명시하세요.
기본 문법
sort [옵션] [파일 ...]
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man sort으로 현재 시스템의 설명을 확인하세요.
사용 예제
기본 정렬
한 줄을 하나의 레코드로 읽어 정렬합니다. 출력이 파일을 바꾸지는 않습니다.
sort names.txt
숫자 기준 정렬
숫자를 문자로 비교하면 10이 2보다 앞설 수 있으므로 -n을 사용합니다.
sort -n scores.txt
두 번째 필드 기준
공백으로 구분된 데이터에서 두 번째 필드를 숫자로 비교합니다. 필드 구조가 일정한 입력에 적합합니다.
sort -k2,2n results.txt
입력과 정렬 결과를 함께 보기
다음 예제는 파일을 만들지 않고 표준 입력의 세 행을 정렬합니다. 기본 정렬은 현재 로케일의 문자 순서를 따르며 원본 데이터는 바뀌지 않습니다.
printf 'zebra\napple\nbanana\n' | sort
예시 출력:
apple banana zebra
숫자가 든 행은 기본적으로 문자열로 비교하므로 2보다 10이 앞설 수 있습니다. 수치 비교가 목적이면 sort -n을 사용하세요. 파일을 정렬해 새 파일로 저장하려면 sort 원본 > 결과처럼 출력 경로를 지정하고, 같은 파일에 바로 리디렉션하지 마세요. 셸이 입력 파일을 먼저 비울 수 있습니다.
여러 열을 기준으로 정렬할 때는 각 키의 범위를 명시하고, 같은 키의 원래 순서를 유지해야 하면 -s를 검토하세요. 로케일이 달라지면 문자 정렬 순서도 달라질 수 있으므로 재현 가능한 스크립트에서는 LC_ALL=C 같은 비교 환경을 명확히 정합니다.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-n |
숫자값으로 비교합니다. |
-r |
결과 순서를 뒤집습니다. |
-k 시작,끝 |
비교할 키 필드를 지정합니다. |
-u |
정렬하면서 같은 비교 키의 중복 결과를 하나만 남깁니다. |
-t 구분자 |
필드 구분 문자를 지정합니다. |
사용할 때 주의할 점
sort -u는 비교 키가 같은 행을 하나로 줄일 수 있으므로 원본의 다른 필드가 중요하면 주의하세요. 텍스트의 원래 등장 순서를 유지하며 인접 중복만 지우려면 uniq가 다릅니다. 입력 파일에 > 같은파일을 사용하면 셸이 먼저 파일을 비울 수 있습니다.
자주 묻는 질문
정렬 결과를 원본 파일에 저장하려면?
GNU sort에서는 sort -o names.txt names.txt를 사용할 수 있습니다. 중요한 파일은 먼저 백업하세요.
공식 문서
옵션의 정확한 동작과 구현별 차이는 sort 관련 공식 문서에서 확인할 수 있습니다.









