Linux 텍스트 정렬

LinuxBeginner
지금 연습하기

소개

텍스트 정렬은 Linux 환경에서 데이터를 효과적으로 관리하고 분석하는 데 필수적인 기술입니다. 텍스트 파일을 특정 순서로 정리하는 능력은 로그, 구성 파일 또는 텍스트 기반 데이터 세트를 다룰 때 생산성을 크게 향상시킬 수 있습니다. Linux 는 데이터를 정렬하는 방식을 사용자 정의할 수 있는 다양한 옵션을 제공하는 강력한 sort 명령어를 제공합니다.

이 랩에서는 Linux sort 명령어를 사용하여 다양한 방식으로 텍스트 데이터를 정리하는 방법을 배우게 됩니다. 파일을 알파벳순, 숫자순, 특정 필드별로 정렬하는 방법을 이해하게 될 것입니다. 이러한 기본적인 기술은 Linux 환경에서 데이터 처리 또는 시스템 관리를 수행하는 모든 사람에게 매우 중요합니다.

이 랩을 마치면 다양한 유형의 텍스트 데이터를 효율적으로 정렬하고 이러한 기술을 자신의 프로젝트 및 워크플로우에 적용할 수 있게 됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 97%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

sort 명령어를 사용한 기본 텍스트 정렬

Linux 의 sort 명령어는 텍스트 파일의 줄을 특정 순서로 정렬하는 데 사용됩니다. 기본적으로 알파벳순으로 파일을 정렬하지만, 정렬 동작을 사용자 정의할 수 있는 많은 옵션을 제공합니다.

정렬을 연습하는 데 사용할 간단한 텍스트 파일을 만들어 시작해 보겠습니다. 프로그래밍 언어 목록이 포함된 파일을 만들 것입니다.

  1. 먼저, 프로젝트 디렉토리로 이동합니다:
cd ~/project
  1. 다음 명령어를 사용하여 languages.txt라는 새 파일을 만듭니다:
echo -e "Python\nJava\nRuby\nGo\nJavaScript\nPHP\nRust\nC++\nSwift\nKotlin" > languages.txt

이 명령어는 각 줄에 하나의 프로그래밍 언어 이름이 있는 10 개의 프로그래밍 언어 이름이 포함된 파일을 만듭니다.

  1. 방금 만든 파일의 내용을 봅니다:
cat languages.txt

다음 출력이 표시되어야 합니다:

Python
Java
Ruby
Go
JavaScript
PHP
Rust
C++
Swift
Kotlin
  1. 이제 sort 명령어를 사용하여 이 파일을 알파벳순으로 정렬해 보겠습니다:
sort languages.txt

출력은 다음과 같아야 합니다:

C++
Go
Java
JavaScript
Kotlin
PHP
Python
Ruby
Rust
Swift

줄이 이제 알파벳순으로 정렬된 것을 확인하십시오. sort 명령어는 입력에서 모든 줄을 읽고, 정렬한 다음 결과를 표준 출력으로 인쇄합니다. 원본 파일은 변경되지 않습니다.

  1. 정렬된 출력을 새 파일에 저장하려면 출력 리디렉션 (output redirection) 을 사용할 수 있습니다:
sort languages.txt > sorted_languages.txt
  1. 새 파일의 내용을 확인합니다:
cat sorted_languages.txt

이전과 동일한 정렬된 출력이 표시되어야 합니다.

sort 명령어는 또한 정렬 순서를 반대로 하는 -r 옵션을 제공합니다. 시도해 보겠습니다:

sort -r languages.txt

출력은 역 알파벳순으로 표시됩니다:

Swift
Rust
Ruby
Python
PHP
Kotlin
JavaScript
Java
Go
C++

이제 알파벳순 정렬을 위한 sort 명령어의 기본 사용법을 배웠습니다.

숫자 정렬 및 필드 구분 기호

많은 실제 시나리오에서 숫자 값 또는 여러 필드가 있는 데이터가 포함된 파일을 정렬해야 할 수 있습니다. sort 명령어는 이러한 시나리오에 대한 옵션을 제공합니다.

숫자 정렬

숫자 정렬을 탐색하기 위해 숫자 값이 있는 파일을 만들어 보겠습니다:

  1. numbers.txt라는 파일을 만듭니다:
cd ~/project
echo -e "10\n5\n100\n20\n1\n50" > numbers.txt
  1. 파일 내용을 봅니다:
cat numbers.txt

다음과 같이 표시됩니다:

10
5
100
20
1
50
  1. 이 파일에 기본 sort 명령어를 사용하면:
sort numbers.txt

출력은 다음과 같습니다:

1
10
100
20
5
50

sort는 기본적으로 각 줄을 텍스트로 처리하기 때문에 이것이 올바른 숫자 순서가 아님을 확인하십시오. 문자열 "100"은 사전식 (사전) 순서에서 "20" 앞에 옵니다.

  1. 숫자별로 정렬하려면 -n 옵션을 사용합니다:
sort -n numbers.txt

이제 올바른 숫자 순서를 볼 수 있습니다:

1
5
10
20
50
100

여러 필드가 있는 파일 정렬

종종 파일에는 쉼표, 탭 또는 공백과 같은 구분자로 구분된 여러 필드가 포함되어 있습니다. sort 명령어를 사용하면 정렬할 필드를 지정할 수 있습니다.

  1. 샘플 데이터가 있는 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
  1. 파일 내용을 봅니다:
cat people.csv

다음과 같이 표시됩니다:

Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Carol,22,Chicago
David,31,Boston
Eve,26,Seattle
  1. 이 파일을 두 번째 필드 (Age) 별로 정렬하려면 -t 옵션을 사용하여 필드 구분자 (이 경우 쉼표) 를 지정하고 -k 옵션을 사용하여 필드 번호를 지정합니다:
sort -t, -k2,2n people.csv

-t, 옵션은 필드 구분자를 쉼표로 설정하고 -k2,2nsort에 두 번째 필드를 정렬에 사용하고 이를 숫자 값으로 처리하도록 지시합니다.

출력은 다음과 같아야 합니다:

Name,Age,City
Carol,22,Chicago
Eve,26,Seattle
Alice,28,New York
David,31,Boston
Bob,35,Los Angeles
  1. 세 번째 필드 (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 옵션을 제공합니다.

  1. 중복 항목이 있는 파일을 만듭니다:
cd ~/project
echo -e "apple\nbanana\napple\ncherry\nbanana\ndates" > fruits.txt
  1. 파일 내용을 봅니다:
cat fruits.txt

다음과 같이 표시됩니다:

apple
banana
apple
cherry
banana
dates
  1. -u 옵션을 사용하여 정렬하고 중복을 제거합니다:
sort -u fruits.txt

출력은 다음과 같습니다:

apple
banana
cherry
dates

대소문자 구분 없는 정렬

기본적으로 sort는 대소문자를 구분합니다. 즉, "Apple"과 "apple"은 서로 다른 것으로 간주됩니다. 정렬 중에 대소문자를 무시하려면 -f 옵션을 사용합니다.

  1. 대소문자가 혼합된 항목이 있는 파일을 만듭니다:
cd ~/project
echo -e "apple\nBanana\nApple\ncherry\nBanana\nDates" > mixed_case.txt
  1. 파일 내용을 봅니다:
cat mixed_case.txt

다음과 같이 표시됩니다:

apple
Banana
Apple
cherry
Banana
Dates
  1. 대소문자를 구분하여 파일을 정렬합니다 (기본값):
sort mixed_case.txt

출력은 다음과 같습니다:

Apple
Banana
Banana
Dates
apple
cherry

ASCII 정렬 순서에서 대문자가 소문자보다 먼저 오는 것을 확인하십시오.

  1. 이제 대소문자를 무시하고 파일을 정렬합니다:
sort -f mixed_case.txt

출력은 다음과 같습니다:

apple
Apple
Banana
Banana
cherry
Dates

이제 "apple"과 "Apple"이 정렬 목적으로 동일하게 처리되는 것을 확인하십시오.

월별 정렬

sort 명령어는 -M 옵션을 사용하여 월 이름을 기준으로 정렬할 수도 있습니다:

  1. 월 이름이 있는 파일을 만듭니다:
cd ~/project
echo -e "December\nFebruary\nJanuary\nMarch\nNovember\nApril" > months.txt
  1. 달력 순서로 월을 정렬합니다:
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 에서 다룬 주요 개념:

  1. sort 명령어를 사용한 기본 알파벳 정렬
  2. 리디렉션을 사용하여 정렬된 출력을 새 파일에 저장
  3. -r 옵션을 사용한 역순 정렬
  4. -n 옵션을 사용한 숫자 정렬
  5. -t-k 옵션을 사용하여 여러 필드가 있는 파일 정렬
  6. -u 옵션을 사용하여 중복 항목 제거
  7. -f 옵션을 사용한 대소문자 구분 없는 정렬
  8. -M 옵션을 사용한 월별 정렬
  9. -c 옵션을 사용하여 파일이 이미 정렬되었는지 확인

이러한 정렬 기술은 Linux 환경에서 텍스트 데이터를 사용하는 모든 사람에게 기본적인 기술입니다. 다음과 같은 다양한 실제 시나리오에 적용할 수 있습니다.

  • 로그 파일 분석
  • CSV 데이터 처리
  • 구성 파일 구성
  • 추가 분석 또는 처리를 위한 데이터 준비

이러한 정렬 기술을 마스터함으로써 텍스트 데이터를 보다 효율적으로 작업하는 데 도움이 되는 귀중한 도구를 Linux 명령줄 도구 모음에 추가했습니다.