개요
리눅스 환경에서 대용량 로그 파일이나 CSV 데이터에서 필요한 열만 빠르게 추출해야 할 때 cut 명령어는 가장 가볍고 강력한 도구입니다. 구분자 기반 필드 분리부터 고정폭 바이트 단위 슬라이싱까지 실무에서 즉시 활용할 수 있는 핵심 기법을 알아봅니다.
구분자(-d)와 필드(-f)를 이용한 CSV 및 시스템 계정 데이터 추출
cut 명령어 실습을 위한 전용 디렉터리를 생성하고 해당 위치로 이동하기 위해 mkdir -p ~/cut_demo && cd ~/cut_demo 명령어를 실행합니다.

쉼표(,)로 구분된 테스트용 사용자 데이터 파일을 생성하기 위해 echo 명령어로 users.csv 파일을 작성합니다.

cut 명령어는 텍스트 파일이나 출력 결과에서 특정 구분자를 기준으로 원하는 열(필드)이나 바이트, 문자 단위 구간만 추출하는 도구입니다.-d 옵션으로 쉼표(,)를 구분자로 지정하고 -f 옵션으로 두 번째와 네 번째 필드를 선택하여 users.csv 파일에서 이름과 부서 정보만 깔끔하게 출력합니다.
⚙️ [주요 옵션]
-d : 필드를 나눌 때 사용할 구분자(기본값은 탭 문자)를 직접 지정합니다.-f : 추출할 필드(열)의 번호나 범위를 지정합니다.-c : 바이트 대신 글자(문자) 단위의 위치를 기준으로 데이터를 잘라냅니다.-b : 바이트 단위의 위치를 기준으로 데이터를 잘라냅니다.--complement : 지정한 필드나 문자 범위를 제외한 나머지 나머지 부분만 반전하여 출력합니다.-s : 구분자를 포함하지 않는 행은 결과 출력에서 제외합니다.--output-delimiter : 결과 출력 시 사용할 필드 구분자를 원하는 문자열로 변경하여 표시합니다.

리눅스 시스템 계정 정보가 담긴 /etc/passwd 파일에서 콜론(:) 구분자를 기준으로 계정명(1번 필드)과 기본 셸 경로(7번 필드)만 추출한 뒤 head 명령어로 상위 5행만 확인합니다.
이처럼 cut 명령어와 파이프(|)를 조합하면 방대한 시스템 설정 파일에서 필요한 핵심 열 데이터만 손쉽게 모니터링할 수 있습니다.

바이트(-b) 및 문자(-c) 단위 슬라이싱으로 고정폭 로그 다루기
실습을 계속 진행하기 위해 앞서 생성해 둔 작업 디렉터리로 이동하고자 cd ~/cut_demo 명령어를 실행합니다.

고정폭 문자 단위 슬라이싱을 실습하기 위해 날짜, 시간, 로그 레벨이 일정한 포맷으로 기록된 service.log 샘플 로그 파일을 생성합니다.
![echo -e ‘2026-10-07 14:00:01 [INFO] Service started\n2026-10-07 14:00:05 [WARN] High memory usage\n2026-10-07 14:00:12 [ERROR] Connection timed out’ > service.log](/ubuntu/20261007_145511_102/captures/s02_c02_echo_-e__2026-10-07_14_00_01__INFO__Service_starte.png)
cut 명령어에 -c1-10 옵션을 지정하여 각 행의 1번째 문자부터 10번째 문자까지 잘라내어 연-월-일 날짜 정보만 깔끔하게 추출합니다.

-c12-19 옵션을 사용하여 로그 파일의 12번째 문자부터 19번째 문자 영역에 위치한 시:분:초 타임스탬프 정보만 정확히 분리하여 출력합니다.

-c22-와 같이 종료 위치를 생략하면 22번째 문자부터 각 행의 끝까지 남은 모든 텍스트를 한 번에 슬라이싱하여 메시지 영역을 추출할 수 있습니다.

출력 구분자(–output-delimiter) 변경 및 지정 필드 제외(–complement)
앞서 생성해 둔 실습용 파일이 있는 디렉터리로 이동하기 위해 cd ~/cut_demo 명령어를 실행합니다.

--output-delimiter 옵션을 사용하면 추출한 필드 사이의 기본 구분자 대신 원하는 문자열을 지정하여 출력할 수 있습니다.
쉼표(,)로 구분된 users.csv 파일에서 2번과 3번 필드를 추출하고 필드 사이에 공백과 파이프(|) 기호를 넣어 가독성을 높여 표시합니다.

--complement 옵션을 지정하면 선택한 필드를 제외하고 나머지 모든 열을 반전하여 출력합니다.-f3 옵션과 함께 사용하여 3번째 필드(역할 정보)만 쏙 빼고 나머지 필드들만 온전하게 남겨 출력합니다.

실무 파이프라인 연계: cut, sort, uniq를 조합한 접속 IP 통계 분석
실습을 계속 진행하기 위해 앞서 생성해 둔 전용 디렉터리로 이동하고자 cd ~/cut_demo 명령어를 실행합니다.

웹 서버의 클라이언트 요청 기록을 모의 분석하기 위해 공백으로 구분된 접속 IP 및 HTTP 요청 정보가 담긴 access.log 샘플 로그 파일을 생성합니다.
![echo -e ‘192.168.1.10 - - [07/Oct/2026] “GET /index.html” 200\n192.168.1.15 - - [07/Oct/2026] “POST /login” 401\n192.168.1.10 - - [07/Oct/2026] “GET /dashboard” 200\n10.0.0.5 - - [07/Oct/2026] “GET /api/v1” 200\n192.168.1.10 - - [07/Oct/2026] “POST /logout” 200’ > access.log](/ubuntu/20261007_145511_102/captures/s04_c02_echo_-e__192_168_1_10_-_-__07_Oct_2026___GET__inde.png)
cut 명령어의 -d' ' -f1 옵션으로 공백 기준 첫 번째 열인 클라이언트 IP 주소만 분리해 냅니다.
이어서 sort로 정렬한 뒤 uniq -c로 중복 횟수를 카운팅하고, 다시 sort -nr을 연결하여 접속 빈도가 가장 높은 IP 순서대로 내림차순 정렬된 통계 순위를 도출합니다.

지금까지 cut 명령어를 활용해 로그와 CSV 데이터에서 원하는 열만 깔끔하게 추출하는 방법을 살펴보았습니다.
구분자와 필드 옵션을 적절히 활용해 일상적인 텍스트 처리와 데이터 가공 작업을 한층 더 효율적으로 진행해 보세요.