소개
텍스트 정렬은 Linux 환경에서 데이터를 효과적으로 관리하고 분석하는 데 필수적인 기술입니다. 텍스트 파일을 특정 순서로 정리하는 능력은 로그, 구성 파일 또는 텍스트 기반 데이터 세트를 다룰 때 생산성을 크게 향상시킬 수 있습니다. Linux 는 데이터를 정렬하는 방식을 사용자 정의할 수 있는 다양한 옵션을 제공하는 강력한 sort 명령어를 제공합니다.
이 랩에서는 Linux sort 명령어를 사용하여 다양한 방식으로 텍스트 데이터를 정리하는 방법을 배우게 됩니다. 파일을 알파벳순, 숫자순, 특정 필드별로 정렬하는 방법을 이해하게 될 것입니다. 이러한 기본적인 기술은 Linux 환경에서 데이터 처리 또는 시스템 관리를 수행하는 모든 사람에게 매우 중요합니다.
이 랩을 마치면 다양한 유형의 텍스트 데이터를 효율적으로 정렬하고 이러한 기술을 자신의 프로젝트 및 워크플로우에 적용할 수 있게 됩니다.
sort 명령어를 사용한 기본 텍스트 정렬
Linux 의 sort 명령어는 텍스트 파일의 줄을 특정 순서로 정렬하는 데 사용됩니다. 기본적으로 알파벳순으로 파일을 정렬하지만, 정렬 동작을 사용자 정의할 수 있는 많은 옵션을 제공합니다.
정렬을 연습하는 데 사용할 간단한 텍스트 파일을 만들어 시작해 보겠습니다. 프로그래밍 언어 목록이 포함된 파일을 만들 것입니다.
- 먼저, 프로젝트 디렉토리로 이동합니다:
cd ~/project
- 다음 명령어를 사용하여
languages.txt라는 새 파일을 만듭니다:
echo -e "Python\nJava\nRuby\nGo\nJavaScript\nPHP\nRust\nC++\nSwift\nKotlin" > languages.txt
이 명령어는 각 줄에 하나의 프로그래밍 언어 이름이 있는 10 개의 프로그래밍 언어 이름이 포함된 파일을 만듭니다.
- 방금 만든 파일의 내용을 봅니다:
cat languages.txt
다음 출력이 표시되어야 합니다:
Python
Java
Ruby
Go
JavaScript
PHP
Rust
C++
Swift
Kotlin
- 이제
sort명령어를 사용하여 이 파일을 알파벳순으로 정렬해 보겠습니다:
sort languages.txt
출력은 다음과 같아야 합니다:
C++
Go
Java
JavaScript
Kotlin
PHP
Python
Ruby
Rust
Swift
줄이 이제 알파벳순으로 정렬된 것을 확인하십시오. sort 명령어는 입력에서 모든 줄을 읽고, 정렬한 다음 결과를 표준 출력으로 인쇄합니다. 원본 파일은 변경되지 않습니다.
- 정렬된 출력을 새 파일에 저장하려면 출력 리디렉션 (output redirection) 을 사용할 수 있습니다:
sort languages.txt > sorted_languages.txt
- 새 파일의 내용을 확인합니다:
cat sorted_languages.txt
이전과 동일한 정렬된 출력이 표시되어야 합니다.
sort 명령어는 또한 정렬 순서를 반대로 하는 -r 옵션을 제공합니다. 시도해 보겠습니다:
sort -r languages.txt
출력은 역 알파벳순으로 표시됩니다:
Swift
Rust
Ruby
Python
PHP
Kotlin
JavaScript
Java
Go
C++
이제 알파벳순 정렬을 위한 sort 명령어의 기본 사용법을 배웠습니다.
숫자 정렬 및 필드 구분 기호
많은 실제 시나리오에서 숫자 값 또는 여러 필드가 있는 데이터가 포함된 파일을 정렬해야 할 수 있습니다. sort 명령어는 이러한 시나리오에 대한 옵션을 제공합니다.
숫자 정렬
숫자 정렬을 탐색하기 위해 숫자 값이 있는 파일을 만들어 보겠습니다:
numbers.txt라는 파일을 만듭니다:
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
- 파일 내용을 봅니다:
cat numbers.txt
다음과 같이 표시됩니다:
10
5
100
20
1
50
- 이 파일에 기본
sort명령어를 사용하면:
sort numbers.txt
출력은 다음과 같습니다:
1
10
100
20
5
50
sort는 기본적으로 각 줄을 텍스트로 처리하기 때문에 이것이 올바른 숫자 순서가 아님을 확인하십시오. 문자열 "100"은 사전식 (사전) 순서에서 "20" 앞에 옵니다.
- 숫자별로 정렬하려면
-n옵션을 사용합니다:
sort -n numbers.txt
이제 올바른 숫자 순서를 볼 수 있습니다:
1
5
10
20
50
100
여러 필드가 있는 파일 정렬
종종 파일에는 쉼표, 탭 또는 공백과 같은 구분자로 구분된 여러 필드가 포함되어 있습니다. sort 명령어를 사용하면 정렬할 필드를 지정할 수 있습니다.
- 샘플 데이터가 있는 CSV(Comma-Separated Values, 쉼표로 구분된 값) 파일을 만듭니다:
cd ~/project
echo -e "Name,Age,City\nAlice,28,New York\nBob,35,Los Angeles\nCarol,22,Chicago\nDavid,31,Boston\nEve,26,Seattle" > people.csv
- 파일 내용을 봅니다:
cat people.csv
다음과 같이 표시됩니다:
Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
- 이 파일을 두 번째 필드 (Age) 별로 정렬하려면
-t옵션을 사용하여 필드 구분자 (이 경우 쉼표) 를 지정하고-k옵션을 사용하여 필드 번호를 지정합니다:
sort -t, -k2,2n people.csv
-t, 옵션은 필드 구분자를 쉼표로 설정하고 -k2,2n은 sort에 두 번째 필드를 정렬에 사용하고 이를 숫자 값으로 처리하도록 지시합니다.
출력은 다음과 같아야 합니다:
Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
- 세 번째 필드 (City) 를 알파벳순으로 정렬할 수도 있습니다:
sort -t, -k3,3 people.csv
출력은 다음과 같습니다:
Name,Age,City
David,31,Boston
Carol,22,Chicago
Bob,35,Los Angeles
Alice,28,New York
Eve,26,Seattle
이러한 옵션을 사용하면 필요에 따라 다양한 데이터 형식의 파일을 효과적으로 정렬할 수 있습니다.
고급 정렬 기술
이 단계에서는 더 복잡한 정렬 요구 사항을 처리하는 데 도움이 될 수 있는 sort 명령의 몇 가지 고급 기능을 살펴보겠습니다.
중복 제거
때로는 데이터에 제거하려는 중복된 줄이 포함될 수 있습니다. sort 명령어는 고유한 줄만 출력하는 -u 옵션을 제공합니다.
- 중복 항목이 있는 파일을 만듭니다:
cd ~/project
echo -e "apple\nbanana\napple\ncherry\nbanana\ndates" > fruits.txt
- 파일 내용을 봅니다:
cat fruits.txt
다음과 같이 표시됩니다:
apple
banana
apple
cherry
banana
dates
-u옵션을 사용하여 정렬하고 중복을 제거합니다:
sort -u fruits.txt
출력은 다음과 같습니다:
apple
banana
cherry
dates
대소문자 구분 없는 정렬
기본적으로 sort는 대소문자를 구분합니다. 즉, "Apple"과 "apple"은 서로 다른 것으로 간주됩니다. 정렬 중에 대소문자를 무시하려면 -f 옵션을 사용합니다.
- 대소문자가 혼합된 항목이 있는 파일을 만듭니다:
cd ~/project
echo -e "apple\nBanana\nApple\ncherry\nBanana\nDates" > mixed_case.txt
- 파일 내용을 봅니다:
cat mixed_case.txt
다음과 같이 표시됩니다:
apple
Banana
Apple
cherry
Banana
Dates
- 대소문자를 구분하여 파일을 정렬합니다 (기본값):
sort mixed_case.txt
출력은 다음과 같습니다:
Apple
Banana
Banana
Dates
apple
cherry
ASCII 정렬 순서에서 대문자가 소문자보다 먼저 오는 것을 확인하십시오.
- 이제 대소문자를 무시하고 파일을 정렬합니다:
sort -f mixed_case.txt
출력은 다음과 같습니다:
apple
Apple
Banana
Banana
cherry
Dates
이제 "apple"과 "Apple"이 정렬 목적으로 동일하게 처리되는 것을 확인하십시오.
월별 정렬
sort 명령어는 -M 옵션을 사용하여 월 이름을 기준으로 정렬할 수도 있습니다:
- 월 이름이 있는 파일을 만듭니다:
cd ~/project
echo -e "December\nFebruary\nJanuary\nMarch\nNovember\nApril" > months.txt
- 달력 순서로 월을 정렬합니다:
sort -M months.txt
출력은 다음과 같습니다:
January
February
March
April
November
December
파일이 이미 정렬되었는지 확인
-c 옵션을 사용하여 실제로 정렬하지 않고 파일이 이미 정렬되었는지 확인할 수 있습니다:
sort -c sorted_languages.txt
파일이 이미 정렬된 경우 출력은 없습니다. 정렬되지 않은 경우 순서가 잘못된 첫 번째 줄을 나타내는 오류 메시지가 표시됩니다.
정렬되지 않은 파일로 시도해 보십시오:
sort -c languages.txt
다음과 같은 오류 메시지가 표시됩니다:
sort: languages.txt:2: disorder: Java
이러한 고급 정렬 기술을 통해 데이터를 구성하고 처리하는 방식을 더 효과적으로 제어할 수 있습니다.
요약
이 Lab 에서는 Linux sort 명령어를 사용하여 텍스트 데이터를 효과적으로 구성하고 관리하는 방법을 배웠습니다. 다양한 정렬 기술과 다양한 유형의 데이터에 적용할 수 있는 옵션을 살펴보았습니다.
이 Lab 에서 다룬 주요 개념:
sort명령어를 사용한 기본 알파벳 정렬- 리디렉션을 사용하여 정렬된 출력을 새 파일에 저장
-r옵션을 사용한 역순 정렬-n옵션을 사용한 숫자 정렬-t및-k옵션을 사용하여 여러 필드가 있는 파일 정렬-u옵션을 사용하여 중복 항목 제거-f옵션을 사용한 대소문자 구분 없는 정렬-M옵션을 사용한 월별 정렬-c옵션을 사용하여 파일이 이미 정렬되었는지 확인
이러한 정렬 기술은 Linux 환경에서 텍스트 데이터를 사용하는 모든 사람에게 기본적인 기술입니다. 다음과 같은 다양한 실제 시나리오에 적용할 수 있습니다.
- 로그 파일 분석
- CSV 데이터 처리
- 구성 파일 구성
- 추가 분석 또는 처리를 위한 데이터 준비
이러한 정렬 기술을 마스터함으로써 텍스트 데이터를 보다 효율적으로 작업하는 데 도움이 되는 귀중한 도구를 Linux 명령줄 도구 모음에 추가했습니다.



