Cut (유닉스)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

`cut`은 텍스트 파일이나 표준 입력에서 특정 부분을 추출하는 데 사용되는 유닉스 명령어이다. 벨 연구소의 고트프리드 W. R. 루데러가 개발했으며, AT&T 시스템 III 유닉스에 처음 등장했다. 주요 옵션으로는 바이트 단위 추출(-b), 문자 단위 추출(-c), 필드 단위 추출(-f) 등이 있으며, 구분자(-d)를 지정하여 필드를 나눌 수 있다. 이 명령어를 통해 텍스트 파일의 특정 문자, 바이트, 필드를 선택적으로 추출할 수 있으며, 파이프라인을 통해 다른 명령어와 함께 사용될 수도 있다.

Cut (유닉스) - [IT 관련 정보]에 관한 문서
기본 정보
{"caption":"\"cut 명령어 구문\""}
종류명령줄 유틸리티
개발자AT&T 벨 연구소, 다양한 오픈 소스 및 상용 소프트웨어 개발자
발표 시기1985년 2월
운영 체제유닉스, 유닉스 계열, IBM i
플랫폼크로스 플랫폼
장르명령어
라이선스coreutils: GPLv3+
📚 더 읽어볼만한 페이지
  • 유닉스 텍스트 처리 유틸리티 - Tr (유닉스)
    `tr` (유닉스)는 텍스트 변환을 위한 유닉스 명령어 유틸리티로, 문자 집합 변환, 특정 문자 삭제 등의 기능을 수행하며, 다양한 옵션과 문자 집합 지정 방식을 지원하여 셸 스크립트 등에서 활용되고, 과거 정치적 악용 사례도 존재합니다.
  • 유닉스 텍스트 처리 유틸리티 - Apropos
    apropos는 사용자가 입력한 키워드와 관련된 매뉴얼 페이지를 검색하는 명령어로, man -k의 래퍼로 작동하며 대소문자를 구분하지 않고 매뉴얼 페이지의 이름 섹션에서 키워드를 검색하여 관련 페이지 목록을 반환한다.
  • 유닉스 SUS2008 유틸리티 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 유닉스 SUS2008 유틸리티 - 로케일
    로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.
  • 표준 유닉스 프로그램 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 표준 유닉스 프로그램 - Rm (유닉스)
    유닉스 명령어 `rm`은 파일을 삭제하는 데 사용되며, 옵션을 통해 삭제 동작을 제어하고 디렉터리를 재귀적으로 삭제할 수 있지만, 잘못 사용하면 시스템에 심각한 손상을 초래할 수 있어 주의가 필요하며 안전 장치나 휴지통 기능 등의 대안이 존재한다.

2. 역사

벨 연구소의 고트프리드 W. R. 루데러가 `cut`의 원본 버전을 작성했다. `cut`은 1987년 2판부터 X/Open 이식성 가이드의 일부이며, POSIX.1의 첫 번째 버전과 단일 유닉스 규격으로 계승되었다. 1982년 AT&T 시스템 III 유닉스에 처음 등장했다.

GNU coreutils에 포함된 `cut` 버전은 데이비드 M. 이나트, 데이비드 매켄지, 짐 메이어링이 작성했다. 이 명령어는 UnxUtils의 일부로 마이크로소프트 윈도우용 별도 패키지로 제공되는데, 이는 일반적인 GNU 유닉스 유사 유틸리티의 네이티브 Win32 포팅 모음이다. `cut` 명령어는 IBM i 운영 체제로도 포팅되었다.

3. 구문

cut 명령어의 기본 구문은 다음과 같다:

```text
cut [-b 목록] [-c 목록] [-f 목록] [-n] [-d 구분자] [-s] [파일]
```

cut 명령어에는 다음과 같은 플래그들을 사용할 수 있다:

* `list`: 콤마나 공백으로 구분된 정수 필드 목록으로, 점진적으로 명령된다. `-` 표시는 필드들의 범위를 포괄하기 위한 약기로서 제공된다. 예를 들어 '4-6'은 범위 4-6를, '5-'는 필드 5부터 끝까지를 나타낸다.

3.1. 주요 옵션

* `-b`: 바이트 단위로 추출 범위를 지정한다. `-n` 옵션과 함께 사용하면 멀티바이트 문자가 깨지지 않도록 한다. 예를 들어, `cut -b1-66`은 줄의 처음 66바이트를 반환한다. `-b` 옵션은 1023바이트 미만의 입력 줄에서만 작동한다.
* `-c`: 문자 단위로 추출 범위를 지정한다. 예를 들어 `cut -c1-66`은 줄의 처음 66문자를 반환한다.
* `-f`: 구획 문자로 구분된 필드 목록을 지정한다.
* `-n`: 멀티바이트 문자가 깨지지 않도록 하기 위해 `-b`와 함께 사용된다.
* `-d`: 필드 구분자를 지정한다. `-f` 옵션과 함께 사용되며, 기본 구분자는 '탭' 문자이다. 사용 중인 의 문맥 안에서 특별한 의미를 지닌 공백과 다른 문자들은 반드시 따옴표를 붙이거나 필요에 따라 이스케이프(escape)해야 한다.
* `-s`: `-f` 옵션과 함께 사용되며, 필드 구분자가 없는 줄은 출력하지 않는다.
* `file`: 입력 파일명을 지정한다. 파일명을 지정하지 않으면 표준 입력이 사용된다.

4. 사용 예제

`cut` 명령어는 텍스트 파일에서 특정 필드나 문자를 추출하는 데 사용된다.

기본 사용법

파일의 각 행에서 특정 범위의 문자를 추출하려면 `-c` 옵션을 사용한다. 예를 들어, 다음 텍스트 파일에서 각 행의 4번째부터 10번째 문자까지 추출할 수 있다.


foo:bar:baz:qux:quux
one:two:three:four:five:six:seven
alpha:beta:gamma:delta:epsilon:zeta:eta:teta:iota:kappa:lambda:mu



$ cut -c 4-10 file


결과는 다음과 같다.


:bar:ba
:two:th
ha:beta


`-d` 옵션으로 구분자를 지정하고, `-f` 옵션으로 추출할 필드를 지정할 수 있다. 예를 들어, 콜론(:) 문자를 구분자로 사용하여 5번째 필드부터 끝까지 추출하려면 다음과 같이 한다.


$ cut -d ":" -f 5- file


결과는 다음과 같다.


quux
five:six:seven
epsilon:zeta:eta:teta:iota:kappa:lambda:mu


추가 예제

* 공백을 구분자로 사용하여 각 줄의 세 번째 필드를 출력:


$ cut -d " " -f 3 file
foo:bar:baz:qux:quux
one:two:three:four:five:six:seven
alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu
brown


(처음 세 줄에서는 공백 문자를 찾을 수 없으므로 전체 줄이 표시된다.)

* 임의의 구분 기호를 가진 두 단어를 분리:


$ line=process.processid
$ cut -d "." -f1 <<< $line
process
$ cut -d "." -f2 <<< $line
processid

4.1. 파일 내용 추출

다음은 `file` 파일의 예시이다.


foo:bar:baz:qux:quux
one:two:three:four:five:six:seven
alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog


각 줄의 4번째 문자부터 10번째 문자까지 추출하려면 다음과 같이 실행한다.


$ cut -c 4-10 file
:bar:ba
:two:th
ha:beta
quick


콜론(`:`)을 필드 구분자로 사용하여 5번째 필드부터 끝까지 추출하는 방법은 다음과 같다.


$ cut -d ":" -f 5- file
quux
five:six:seven
epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog


(마지막 줄에는 콜론 문자가 없으므로 전체 줄이 표시된다.)

`-d` 옵션은 필드 구분 기호(위 예시에서는 콜론)를 지정하며, `-f` 옵션은 출력할 필드 범위를 지정한다(위 예시에서는 5번째 필드부터 끝까지). `-d` 옵션은 `-f` 옵션과 함께 사용해야 한다.