리눅스 cut 명령어 완벽 가이드 - 로그·CSV 텍스트 데이터 원하는 열만 쏙 뽑아내기!

개요

리눅스 환경에서 대용량 로그 파일이나 CSV 데이터에서 필요한 열만 빠르게 추출해야 할 때 cut 명령어는 가장 가볍고 강력한 도구입니다. 구분자 기반 필드 분리부터 고정폭 바이트 단위 슬라이싱까지 실무에서 즉시 활용할 수 있는 핵심 기법을 알아봅니다.

구분자(-d)와 필드(-f)를 이용한 CSV 및 시스템 계정 데이터 추출

cut 명령어 실습을 위한 전용 디렉터리를 생성하고 해당 위치로 이동하기 위해 mkdir -p ~/cut_demo && cd ~/cut_demo 명령어를 실행합니다.

mkdir -p ~/cut_demo && cd ~/cut_demo

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

echo -e ‘id,name,role,department\n1,alice,admin,security\n2,bob,dev,backend\n3,charlie,dev,frontend’ > users.csv

cut 명령어는 텍스트 파일이나 출력 결과에서 특정 구분자를 기준으로 원하는 열(필드)이나 바이트, 문자 단위 구간만 추출하는 도구입니다.
-d 옵션으로 쉼표(,)를 구분자로 지정하고 -f 옵션으로 두 번째와 네 번째 필드를 선택하여 users.csv 파일에서 이름과 부서 정보만 깔끔하게 출력합니다.
⚙️ [주요 옵션]

-d : 필드를 나눌 때 사용할 구분자(기본값은 탭 문자)를 직접 지정합니다.
-f : 추출할 필드(열)의 번호나 범위를 지정합니다.
-c : 바이트 대신 글자(문자) 단위의 위치를 기준으로 데이터를 잘라냅니다.
-b : 바이트 단위의 위치를 기준으로 데이터를 잘라냅니다.
--complement : 지정한 필드나 문자 범위를 제외한 나머지 나머지 부분만 반전하여 출력합니다.
-s : 구분자를 포함하지 않는 행은 결과 출력에서 제외합니다.
--output-delimiter : 결과 출력 시 사용할 필드 구분자를 원하는 문자열로 변경하여 표시합니다.

cut -d’,’ -f2,4 users.csv

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

cut -d’:’ -f1,7 /etc/passwd | head -n 5

바이트(-b) 및 문자(-c) 단위 슬라이싱으로 고정폭 로그 다루기

실습을 계속 진행하기 위해 앞서 생성해 둔 작업 디렉터리로 이동하고자 cd ~/cut_demo 명령어를 실행합니다.

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

cut 명령어에 -c1-10 옵션을 지정하여 각 행의 1번째 문자부터 10번째 문자까지 잘라내어 연-월-일 날짜 정보만 깔끔하게 추출합니다.

cut -c1-10 service.log

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

cut -c12-19 service.log

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

cut -c22- service.log

출력 구분자(–output-delimiter) 변경 및 지정 필드 제외(–complement)

앞서 생성해 둔 실습용 파일이 있는 디렉터리로 이동하기 위해 cd ~/cut_demo 명령어를 실행합니다.

cd ~/cut_demo

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

cut -d’,’ -f2,3 –output-delimiter=’ | ’ users.csv

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

cut -d’,’ –complement -f3 users.csv

실무 파이프라인 연계: cut, sort, uniq를 조합한 접속 IP 통계 분석

실습을 계속 진행하기 위해 앞서 생성해 둔 전용 디렉터리로 이동하고자 cd ~/cut_demo 명령어를 실행합니다.

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

cut 명령어의 -d' ' -f1 옵션으로 공백 기준 첫 번째 열인 클라이언트 IP 주소만 분리해 냅니다.
이어서 sort로 정렬한 뒤 uniq -c로 중복 횟수를 카운팅하고, 다시 sort -nr을 연결하여 접속 빈도가 가장 높은 IP 순서대로 내림차순 정렬된 통계 순위를 도출합니다.

cut -d’ ’ -f1 access.log | sort | uniq -c | sort -nr

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