Linux / 명령어 / cut - 행에서 문자와 필드 추출
cut은 각 입력 행에서 지정한 바이트, 문자 또는 구분자 기준 필드를 골라 출력합니다. 단순한 열 추출에는 편리하지만 복잡한 CSV 파싱 도구는 아닙니다.
cut 명령어란?
필드 모드 -f는 기본적으로 탭을 구분자로 사용합니다. 콜론이나 쉼표를 쓰려면 -d를 함께 지정합니다. -c와 -b는 구현과 문자 인코딩을 고려해 선택하세요.
기본 문법
cut -d '구분자' -f 필드번호 [파일 ...]
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man cut으로 현재 시스템의 설명을 확인하세요.
사용 예제
콜론 구분 필드 추출
시스템 계정 목록에서 첫 번째 필드를 추출합니다.
cut -d ':' -f 1 /etc/passwd
여러 필드 고르기
쉼표로 지정한 필드 순서는 원래 입력 순서에 따라 출력됩니다.
cut -d ':' -f 1,7 /etc/passwd
문자 범위 추출
각 행의 앞부분을 살펴볼 때 사용합니다.
cut -c 1-8 sample.txt
구분자로 필드를 추출한 결과
콜론으로 구분된 두 행에서 첫 번째 필드만 꺼내는 예제입니다. -d는 구분자, -f는 선택할 필드 번호입니다.
printf 'alpha:100\nbeta:200\n' | cut -d: -f1
예시 출력:
alpha beta
cut -d ' ' -f2는 공백이 여러 개 연속된 텍스트를 열 기준으로 안정적으로 파싱하지 못합니다. 그런 데이터는 awk가 적합합니다. CSV처럼 따옴표 안에 구분자가 들어갈 수 있는 형식은 cut만으로 정확히 처리할 수 없으므로 전용 CSV 파서를 사용하세요.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
-d 구분자 |
필드 구분 문자를 지정합니다. |
-f 목록 |
출력할 필드 번호나 범위를 고릅니다. |
-c 목록 |
문자 위치를 선택합니다. |
-b 목록 |
바이트 위치를 선택합니다. |
-s |
필드 구분자가 없는 행을 출력하지 않습니다. |
사용할 때 주의할 점
cut -d ','는 인용부호 안의 쉼표나 여러 줄에 걸친 CSV 필드를 이해하지 못합니다. 그런 데이터에는 CSV 전용 파서를 사용하세요. 구분자가 없는 행은 기본적으로 그대로 출력되므로 필요하면 -s를 추가합니다.
자주 묻는 질문
공백으로 구분된 여러 열도 cut으로 추출하나요?
연속 공백의 폭이 일정하지 않다면 필드 번호가 어긋날 수 있습니다. 이런 입력은 awk가 보통 더 적합합니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 cut 관련 공식 문서에서 확인할 수 있습니다.









