> 텍스트 처리 및 검색 > sort

sort: 텍스트 파일 정렬하기

`sort` 명령어는 텍스트 파일의 내용을 줄 단위로 정렬하는 데 사용되는 강력한 유틸리티입니다. 사전순, 숫자순, 월별 등 다양한 기준으로 정렬할 수 있으며, 특히 `-n` 옵션을 사용하면 숫자를 문자열이 아닌 실제 숫자 값으로 인식하여 올바르게 정렬할 수 있어 로그 파일이나 데이터 분석 시 매우 유용합니다.

개요

`sort` 명령어는 텍스트 파일의 각 줄을 지정된 기준에 따라 재배열하여 표준 출력으로 내보냅니다. 기본적으로 사전순으로 정렬하지만, 다양한 옵션을 통해 숫자, 월, 특정 필드 등을 기준으로 정렬할 수 있습니다. 특히 `-n` 옵션은 숫자를 문자열이 아닌 실제 숫자 값으로 인식하여 올바르게 정렬하는 데 필수적입니다.

주요 기능

  • 텍스트 파일의 줄 단위 정렬
  • 사전순, 숫자순, 월별 등 다양한 정렬 기준 지원
  • 중복 제거, 특정 필드 기준 정렬 기능 제공
  • 표준 입력 및 파일 입력 모두 처리 가능

주요 옵션

`sort` 명령어는 강력한 정렬 기능을 제공하기 위해 다양한 옵션을 지원합니다. 다음은 주로 사용되는 옵션들입니다.

정렬 기준

출력 및 기타

생성된 명령어:

명령어를 조합해 보세요.

설명:

`sort` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

다음은 `sort` 명령어와 주요 옵션을 활용한 실제 사용 예시입니다.

기본 숫자 정렬

cat numbers.txt
# 출력 예시:
# 10
# 2
# 1
# 20

sort -n numbers.txt
# 예상 출력:
# 1
# 2
# 10
# 20

numbers.txt 파일의 내용을 숫자 기준으로 오름차순 정렬합니다.

역순 숫자 정렬

sort -nr numbers.txt
# 예상 출력:
# 20
# 10
# 2
# 1

numbers.txt 파일의 내용을 숫자 기준으로 내림차순 정렬합니다.

특정 필드(숫자) 기준 정렬

cat data.csv
# 출력 예시:
# apple,100,red
# banana,20,yellow
# cherry,50,red

sort -t, -nk2 data.csv
# 예상 출력:
# banana,20,yellow
# cherry,50,red
# apple,100,red

data.csv 파일의 두 번째 필드를 쉼표(,)로 구분하여 숫자 기준으로 정렬합니다.

중복 제거하며 숫자 정렬

cat numbers_dup.txt
# 출력 예시:
# 10
# 2
# 1
# 20
# 2

sort -nu numbers_dup.txt
# 예상 출력:
# 1
# 2
# 10
# 20

numbers_dup.txt 파일의 내용을 숫자 기준으로 정렬하고 중복되는 줄은 제거합니다.

정렬 결과를 파일로 저장

sort -n input.txt -o sorted_numbers.txt
cat sorted_numbers.txt

input.txt 파일의 내용을 숫자 기준으로 정렬한 후, 그 결과를 sorted_numbers.txt 파일에 저장합니다.

팁 & 주의사항

`sort` 명령어는 매우 강력하지만, 올바르게 사용하지 않으면 예상과 다른 결과를 얻을 수 있습니다. 다음 팁과 주의사항을 참고하여 효율적으로 활용하세요.

유용한 팁

  • `sort`는 기본적으로 안정적인 정렬(stable sort)을 수행합니다. 즉, 동일한 키를 가진 레코드의 상대적 순서는 유지됩니다.
  • `-k` 옵션 사용 시 필드 번호는 1부터 시작합니다.
  • 대용량 파일 정렬 시 `-T` 옵션으로 임시 디렉토리를 지정하면 성능 향상에 도움이 될 수 있습니다.
  • 파이프(`|`)와 함께 사용하여 다른 명령어의 출력을 정렬하는 데 자주 활용됩니다. (예: `ls -l | sort -nk5`)

주의사항

  • `-n` 옵션 없이 숫자를 정렬하면 '10'이 '2'보다 먼저 오는 등 사전순으로 정렬되어 예상과 다른 결과가 나올 수 있습니다. 항상 숫자 정렬 시 `-n`을 사용하세요.
  • 로케일(locale) 설정에 따라 정렬 순서가 달라질 수 있습니다. 일관된 결과를 위해 `LC_ALL=C sort`와 같이 로케일을 명시적으로 설정할 수 있습니다.

동일 카테고리 명령어