소개
이 실습에서는 텍스트 데이터를 조직하고 배열하는 강력한 유틸리티인 Linux sort 명령어를 살펴봅니다. 여러분은 학교 행정 관리자가 되어 학생 정보를 효율적으로 관리하고 분석하기 위해 sort 명령어의 다양한 옵션을 사용하게 됩니다. 이 실습 경험은 Linux 명령줄 도구를 사용하여 실제 시나리오에서 데이터를 조작하는 방법을 이해하는 데 도움이 될 것입니다.
이 실습에서는 텍스트 데이터를 조직하고 배열하는 강력한 유틸리티인 Linux sort 명령어를 살펴봅니다. 여러분은 학교 행정 관리자가 되어 학생 정보를 효율적으로 관리하고 분석하기 위해 sort 명령어의 다양한 옵션을 사용하게 됩니다. 이 실습 경험은 Linux 명령줄 도구를 사용하여 실제 시나리오에서 데이터를 조작하는 방법을 이해하는 데 도움이 될 것입니다.
먼저 학생 명단을 알파벳 순서로 정렬해 보겠습니다. 이는 학급 명부를 작성하거나 학생 기록을 정리할 때 자주 수행하는 작업입니다.
우선 학생 명단의 내용을 확인해 봅시다:
cat ~/project/students.txt
특별한 순서 없이 나열된 다음과 같은 학생 명단이 나타날 것입니다:
David Lee
Alice Johnson
Charlie Brown
Bob Smith
Eve Wilson
이제 sort 명령어를 사용하여 이 이름들을 알파벳 순으로 정렬해 보겠습니다:
sort ~/project/students.txt
이 명령은 정렬된 학생 명단을 화면에 표시합니다. 출력 결과는 다음과 같아야 합니다:
Alice Johnson
Bob Smith
Charlie Brown
David Lee
Eve Wilson
sort 명령어는 기본적으로 행을 알파벳 순으로 정렬합니다. 각 행의 시작 부분부터 문자 단위로 비교합니다. 그렇기 때문에 "Alice"가 "Bob"보다 먼저 나오게 됩니다.
화면에 결과가 출력되지 않더라도 걱정하지 마세요! 명령은 정상적으로 실행되었으며 터미널에 결과를 표시한 것입니다. 만약 정렬된 목록을 새 파일로 저장하고 싶다면, 다음과 같이 출력 리다이렉션 연산자 >를 사용할 수 있습니다: sort ~/project/students.txt > ~/project/sorted_students.txt
다음으로 학생들을 나이순으로 정렬해 보겠습니다. 이는 학생들을 연령대에 맞는 그룹이나 활동으로 편성할 때 유용합니다.
먼저 데이터를 확인해 봅시다:
cat ~/project/student_ages.txt
다음과 같이 학생 이름과 나이가 포함된 목록이 보일 것입니다:
David Lee:21
Alice Johnson:18
Charlie Brown:19
Bob Smith:20
Eve Wilson:18
나이순으로 정렬하기 위해 -n 옵션을 사용합니다. 이 옵션은 sort가 숫자를 문자열이 아닌 수치 데이터로 처리하도록 지시합니다:
sort -n -t: -k2 ~/project/student_ages.txt
이 명령어의 구성을 자세히 살펴보겠습니다:
-n: 수치 정렬을 수행하도록 지정합니다.-t:: 필드 구분자가 콜론 (:) 임을 지정합니다.-k2: 두 번째 필드 (나이) 를 정렬 기준으로 사용하도록 지정합니다.실행하면 나이가 적은 순서부터 많은 순서로 정렬된 목록이 표시됩니다:
Alice Johnson:18
Eve Wilson:18
Charlie Brown:19
Bob Smith:20
David Lee:21
-n 옵션이 없다면 sort는 나이를 문자열로 취급하여 잘못된 순서 (예: 18, 19, 20, 21, 3) 로 정렬할 수 있습니다. -n 옵션은 올바른 숫자 순서를 보장합니다.
이번에는 학생 성적을 내림차순으로 정렬해 보겠습니다. 이 방식은 학생들의 순위를 매기거나 성적 우수자를 식별할 때 자주 사용됩니다.
먼저 현재 목록을 확인합니다:
cat ~/project/student_grades.txt
다음과 같은 내용이 나타날 것입니다:
David Lee:87
Alice Johnson:92
Charlie Brown:95
Bob Smith:88
Eve Wilson:91
성적이 높은 순서대로 정렬하기 위해 역순 정렬을 의미하는 -r 옵션과 수치 정렬을 위한 -n 옵션을 함께 사용합니다:
sort -nr -t: -k2 ~/project/student_grades.txt
각 옵션의 역할은 다음과 같습니다:
-n: 수치 정렬 수행-r: 정렬 순서 반전 (오름차순 대신 내림차순)-t:: 필드 구분자를 콜론으로 지정-k2: 두 번째 필드 (성적) 를 정렬 기준으로 사용이 명령은 성적이 가장 높은 학생부터 낮은 학생 순으로 표시합니다:
Charlie Brown:95
Alice Johnson:92
Eve Wilson:91
Bob Smith:88
David Lee:87
-r 옵션은 순위 산정, 상위 성과자 파악, 작업 우선순위 지정 등 가장 높은 값을 먼저 확인해야 하는 다양한 실제 상황에서 매우 유용합니다.
이 단계에서는 이름, 나이, 성적이 포함된 더 복잡한 학생 기록을 정렬해 보겠습니다. 이는 종합적인 학생 데이터베이스를 다룰 때 흔히 발생하는 시나리오입니다.
먼저 데이터를 확인해 봅시다:
cat ~/project/student_records.txt
각 행에는 콜론으로 구분된 학생의 이름, 나이, 성적이 포함되어 있습니다:
David Lee:21:87
Alice Johnson:18:92
Charlie Brown:19:95
Bob Smith:20:88
Eve Wilson:18:91
이 파일을 나이 (두 번째 필드) 를 기준으로 먼저 정렬하고, 나이가 같을 경우 성적 (세 번째 필드) 을 기준으로 정렬하려면 다음 명령을 사용합니다:
sort -t: -k2n -k3nr ~/project/student_records.txt
명령어의 각 부분은 다음을 의미합니다:
-t:: 필드 구분자가 콜론임을 지정-k2n: 두 번째 필드 (나이) 를 기준으로 수치 오름차순 정렬-k3nr: 그 다음 세 번째 필드 (성적) 를 기준으로 수치 내림차순 정렬결과적으로 나이순 (오름차순) 으로 먼저 정렬되고, 나이가 같은 학생들 사이에서는 성적순 (내림차순) 으로 정렬된 기록이 표시됩니다:
Alice Johnson:18:92
Eve Wilson:18:91
Charlie Brown:19:95
Bob Smith:20:88
David Lee:21:87
이러한 다중 키 정렬은 여러 기준에 따라 데이터를 정리해야 할 때 매우 유용합니다. 이 사례에서는 학생들을 나이별로 그룹화하고, 각 연령대 내에서 성적순으로 순위를 매겼습니다.
때로는 데이터 입력 오류나 중복 제출로 인해 학생 기록에 중복된 내용이 포함될 수 있습니다. 이러한 중복 항목을 제거하는 방법을 배워보겠습니다.
먼저 중복 가능성이 있는 파일을 확인합니다:
cat ~/project/student_clubs.txt
다음과 같은 내용이 보일 것입니다:
Alice Johnson:Chess Club
Bob Smith:Debate Team
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
Alice Johnson:Chess Club
Bob Smith:Science Club
목록을 정렬하면서 중복을 제거하려면 -u 옵션을 사용합니다:
sort -u ~/project/student_clubs.txt
이 명령은 중복이 제거된 고유한 학생 클럽 가입 목록을 정렬하여 표시합니다:
Alice Johnson:Chess Club
Bob Smith:Debate Team
Bob Smith:Science Club
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
-u 옵션은 sort가 동일한 내용의 행들 중 첫 번째 행만 출력하도록 합니다. 즉, 정렬 후 중복된 행을 제거합니다. 이는 고유 항목 목록을 만들거나 불필요한 데이터를 식별하여 제거할 때 특히 유용합니다.
참고로 "Bob Smith"는 두 개의 서로 다른 클럽에 가입되어 있기 때문에 두 번 나타납니다. 행 전체의 내용이 다르므로 이는 중복으로 간주되지 않습니다.
이 실습에서는 sort 명령어를 사용하여 다양한 유형의 학생 데이터를 정리하는 방법을 배웠습니다. 다음과 같은 유용한 옵션들을 살펴보았습니다:
-n을 이용한 수치 정렬-r을 이용한 역순 정렬-k를 이용한 다중 필드 기준 정렬-t를 이용한 사용자 정의 필드 구분자 지정-u를 이용한 중복 제거그 외에도 다음과 같은 유용한 sort 옵션들이 있습니다:
-f: 정렬 시 대소문자 구분 안 함-b: 앞부분의 공백 무시-c: 입력 데이터가 이미 정렬되어 있는지 확인-o: 결과를 표준 출력이 아닌 파일로 저장이러한 기술은 교육 현장뿐만 아니라 다양한 전문적인 상황에서 데이터를 관리하고 분석할 때 매우 귀중하게 사용될 것입니다.