리눅스 명령어 sort 사용법 및 6가지 옵션

리눅스 명령어 sort는 파일이나 입력 데이터를 정렬하는 데 사용되는 매우 유용한 도구입니다. 이 명령어를 사용하면 텍스트 파일이나 데이터의 특정 열을 기준으로 오름차순 또는 내림차순으로 정렬할 수 있으며, 숫자, 알파벳, 시간 등 다양한 방식으로 정렬할 수 있습니다. 이번 포스팅에서는 sort 명령어의 기본적인 사용법부터 여러 옵션들을 설명하고, 실제로 어떤 상황에서 유용하게 활용할 수 있는지 알아보겠습니다.

sort 명령어의 기본 사용법

sort 명령어는 텍스트 데이터를 정렬할 때 가장 많이 사용됩니다. 일반적으로 텍스트 파일에서 줄 단위로 데이터를 읽고, 이를 정렬한 후 출력하는 방식으로 작동합니다. 이 기본 명령어는 파일명.txt라는 파일의 내용을 기본적으로 알파벳 오름차순(사전 순)으로 정렬합니다.

sort filename.txt
ShellScript

만약 아래와 같은 파일이 있다고 가정해 봅시다.

banana
apple
tomato
cherry
raspberry
Plaintext

sort 파일명.txt 명령어를 실행하면 결과는 다음과 같이 사전 순으로 정렬되는 것을 볼 수 있습니다.

그림 1. 리눅스 명령어 sort로 텍스트 파일 내용을 정렬
그림 1. 리눅스 명령어 sort로 텍스트 파일 내용을 정렬

옵션을 활용한 정렬 방식 확장

sort 명령어는 기본적인 알파벳 정렬 외에도 다양한 옵션을 제공하여 보다 복잡한 정렬 작업을 수행할 수 있습니다. 몇 가지 주요 옵션들을 살펴보겠습니다.

-n: 숫자 정렬

기본적으로 sort는 알파벳 순서로 정렬하지만, 숫자 데이터를 다룰 때는 -n 옵션을 사용하여 숫자 순으로 정렬할 수 있습니다.

sort -n number_file.txt
ShellScript

예를 들어, 파일의 내용이 아래와 같다면:

12
2
29
30
8
83
Plaintext

-n 옵션을 사용하지 않고 sort 명령어를 사용하면 다음과 같이 숫자값은 정렬이 되지 않는 것을 볼 수 있습니다.

그림 2. 리눅스 명령어 sort: -n 옵션을 사용하지 않고 정렬을 시도한 경우
그림 2. 리눅스 명령어 sort: -n 옵션을 사용하지 않고 정렬을 시도한 경우

sort -n 숫자파일.txt 명령어를 실행하면 다음과 같이 숫자값들이 정렬이 됩니다. 따라서 문자 뿐 아니라 숫자도 함께 정렬하려면 -n 옵션을 사용해야 합니다.

그림 3. 리눅스 명령어 sort: -n 옵션을 사용하여 숫자값 정렬
그림 3. 리눅스 명령어 sort: -n 옵션을 사용하여 숫자값 정렬

-r: 내림차순 정렬

-r 옵션은 결과를 내림차순으로 정렬할 때 사용됩니다. 숫자나 알파벳 모두에 적용할 수 있습니다.

sort -r filename.txt
ShellScript

위 명령어는 기본적으로 사전 순 정렬을 거꾸로(내림차순) 출력합니다. 이번에는 숫자와 문자가 섞인 파일을 내림차순으로 정렬하기 위해 -n 옵션과 함께 사용해 보겠습니다.

sort -nr number_file.txt
ShellScript

다음과 같이 숫자와 문자가 정렬되는 것을 확인할 수 있습니다. 숫자와 문자가 함께 있을 때에는 문자, 숫자 순으로 정렬된다는 것을 알 수 있겠네요.

그림 4. 리눅스 명령어 sort: -nr 옵션으로 숫자와 문자값이 함께 있을 때 내림차순 정렬
그림 4. 리눅스 명령어 sort: -nr 옵션으로 숫자와 문자값이 함께 있을 때 내림차순 정렬

-k: 특정 열(column) 기준 정렬

파일에 여러 열이 있을 경우 특정 열을 기준으로 정렬할 수 있습니다. 이때 사용하는 옵션이 -k입니다.

sort -k 2 filename.txt
ShellScript

위 명령어는 파일의 두 번째 열을 기준으로 정렬합니다. 예를 들어, 아래와 같은 파일이 있을 때:

banana 32
apple 17
tomato 2
cherry 108
raspberry 87
Plaintext

sort -k 2 파일명.txt 명령어를 실행하면 두 번째 열인 숫자값을 기준으로 정렬됩니다.

그림 5. 리눅스 명령어 sort: -k 옵션으로 두 번째 열 기준으로 정렬
그림 5. 리눅스 명령어 sort: -k 옵션으로 두 번째 열 기준으로 정렬

-t: 구분자 지정

데이터가 공백이 아닌 다른 구분자로 구분된 경우 -t 옵션을 사용해 구분자를 지정할 수 있습니다. 예를 들어, CSV 파일처럼 쉼표(,)로 구분된 데이터를 정렬할 때 유용합니다.

sort -t ',' -k 2 filename.csv
ShellScript

이 명령어는 쉼표를 구분자로 사용하고, 두 번째 열을 기준으로 데이터를 정렬합니다.

-u: 중복 제거

정렬을 할 때 중복된 데이터를 제거하고 싶을 때는 -u 옵션을 사용합니다. 이 옵션은 중복된 항목을 하나로 통합하여 출력합니다.

sort -u 파일명.txt
ShellScript

다음과 같은 자료가 있을 때 데이터의 종류가 얼마나 되는지 파악할 때 사용할 수 있습니다.

apple
tomato
apple
raspberry
grape
apple
tomato
apple
tomato
apple
grape
Plaintext

실행하면 다음과 같이 4가지 종류가 있는 것을 확인할 수 있으며 오름차순 정렬된 것을 확인할 수 있습니다.

그림 6. 리눅스 명령어 sort: -u 옵션을 사용하여 중복된 데이터 제거
그림 6. 리눅스 명령어 sort: -u 옵션을 사용하여 중복된 데이터 제거

-o: 정렬된 결과를 파일로 저장

정렬된 결과를 파일로 저장하고 싶을 때는 -o 옵션을 사용하면 됩니다.

sort filename.txt -o sorted_filename.txt
ShellScript

위 명령어는 filename.txt의 내용을 정렬한 후, sorted_filename.txt라는 파일에 결과를 저장합니다.

sort 명령어 활용 예시

sort 명령어는 단순한 파일 정렬뿐만 아니라 데이터 분석이나 로그 파일을 처리할 때도 유용하게 사용됩니다. 특히 대용량 데이터에서 특정 필드만 정렬하거나 숫자, 날짜, 시간 등을 기준으로 정렬할 때 매우 강력한 도구가 될 수 있습니다.

예를 들어, 시스템 로그 파일에서 특정 사용자의 기록만 뽑아내 정렬하고 싶다면 grep 명령어와 함께 사용할 수 있습니다. 이 명령어는 먼저 grep으로 특정 사용자의 기록을 추출한 뒤, 세 번째 열을 기준으로 정렬하는 작업을 수행합니다.

grep 'username' filename.txt | sort -k 3
ShellScript

다음 그림은 /var/log/syslog에서 WARNING이 들어간 로그의 세 번째 열을 기준으로 정렬한 예입니다.

그림 7. 리눅스 명령어 sort: grep 명령어와 함께 사용하여 시스템 로그 정렬
그림 7. 리눅스 명령어 sort: grep 명령어와 함께 사용하여 시스템 로그 정렬

주의사항

  • sort 명령어는 기본적으로 사전 순 정렬을 수행하므로 숫자 데이터를 다룰 때는 반드시 -n 옵션을 사용해야 합니다.
  • 대용량 데이터를 처리할 때는 시스템 자원을 많이 사용할 수 있으므로, 필요에 따라 메모리 사용을 고려한 옵션을 함께 사용해야 합니다.
  • -o 옵션을 사용할 때 입력 파일과 출력 파일을 동일하게 설정하면 입력 파일이 손상될 수 있으므로 주의해야 합니다.

정리

리눅스 명령어 sort는 데이터를 정렬하는 도구입니다. 기본적인 알파벳 순 정렬부터 숫자, 특정 열을 기준으로 한 정렬까지 다양한 옵션을 제공하며, 이를 활용하면 복잡한 데이터 처리 작업도 손쉽게 해결할 수 있습니다. 특히 로그 파일 분석, 대규모 데이터 처리에서 매우 유용하게 사용될 수 있으니 꼭 익혀 두는 것이 좋습니다. 다양한 옵션을 적절히 조합해 사용한다면 효율적으로 데이터를 관리할 수 있을 것입니다.

참고자료

관련 포스트

Leave a Comment