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 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux apt 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / shred - 파일 데이터 덮어쓰기

Linux / 명령어 / shred - 파일 데이터 덮어쓰기

Linux shred 명령어로 파일이나 장치의 데이터를 덮어쓰는 방법과 한계를 설명합니다. SSD, 저널링·복사 방식 파일 시스템, 스냅샷 환경에서 완전 삭제를 보장할 수 없는 이유도 알아봅니다.

Linux / 명령어 / man - 명령어 매뉴얼 확인

Linux / 명령어 / man - 명령어 매뉴얼 확인

man 명령어로 리눅스 매뉴얼을 읽고 검색하는 방법을 설명합니다. 매뉴얼 섹션, 화면 이동, 키워드 검색, 셸 내장 명령 확인과 문서가 없을 때의 해결 방법을 함께 정리합니다.

Linux / 명령어 / cp - 파일과 디렉터리 복사

Linux / 명령어 / cp - 파일과 디렉터리 복사

Linux cp 명령어로 파일과 디렉터리를 복사하는 방법을 설명합니다. 덮어쓰기 제어, 속성 보존, 심볼릭 링크, 희소 파일과 안전한 복사 옵션을 함께 정리합니다.

Linux / Memo

Linux / Memo

리눅스와 관련된 여러 정보를 정리합니다.

Linux / 명령어 / ls - 파일과 디렉터리 목록 확인

Linux / 명령어 / ls - 파일과 디렉터리 목록 확인

Linux ls 명령어로 파일과 디렉터리 목록, 숨김 파일, 권한과 소유자, 크기 및 수정 시간을 확인하는 방법을 설명합니다. 자주 쓰는 옵션 조합과 정렬 방법, 스크립트에서 ls 출력을 안전하게 다루는 기준도 정리합니다.

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

Linux host 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux 강좌 / APT와 DNF로 패키지 설치·업데이트하기

Linux 강좌 / APT와 DNF로 패키지 설치·업데이트하기

Debian·Ubuntu의 APT와 Rocky Linux의 DNF로 패키지를 검색·설치·업데이트·제거하는 방법을 비교합니다. 저장소와 의존성, 업데이트 전 확인할 항목을 다룹니다.

Linux / 네트워크 / IP 확인하는 방법

Linux / 네트워크 / IP 확인하는 방법

Linux에서 ip address와 ip route get으로 인터페이스 주소와 실제 출발지 IP를 확인하는 방법을 설명합니다. 사설·공인 IP, IPv4·IPv6와 컨테이너 환경의 차이도 정리합니다.

Linux / 명령어 / fsck - 파일 시스템 오류 검사와 복구 시 주의점

Linux / 명령어 / fsck - 파일 시스템 오류 검사와 복구 시 주의점

Linux fsck 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.