Linux cut 명령

업데이트 : 2019 년 5 월 4 일 by Computer Hope

Unix -운영 체제와 마찬가지로 cut 명령은 파일 또는 파일의 각 줄에서 섹션을 제거 ( “잘라 내기”)합니다.

이 문서는 GNU / Linux 버전의 cut을 다룹니다.

구문

cut OPTION... ...

옵션

-b, –bytes = LIST LIST에 지정된대로 각 행의 바이트 만 선택하십시오. LIST는 바이트, 바이트 세트 또는 바이트 범위를 지정합니다. 아래의 LIST 지정을 참조하십시오.
-c, –characters = LIST LIST에 지정된대로 각 줄에서 문자 만 선택하십시오. LIST는 문자, 문자 세트 또는 문자 범위를 지정합니다. 아래의 LIST 지정을 참조하십시오.
-d, –delimiter = DELIM 필드 구분 기호로 탭 대신 DELIM 문자를 사용하십시오.
-f, –fields = LIST 각 행에서이 필드 만 선택하십시오. -s 옵션이 지정되지 않은 경우 분리 문자가없는 행도 인쇄하십시오. LIST는 필드, 필드 세트 또는 필드 범위를 지정합니다. 아래의 LIST 지정을 참조하십시오.
-n 이 옵션은 무시되지만 호환성을 위해 포함됩니다.
-complement 선택한 바이트, 문자 또는 필드 세트를 보완합니다.
-s, –only-delimited 구분자를 포함하지 않는 행은 인쇄하지 않습니다.
-output-delimiter = STRING 출력 구분자 문자열로 STRING을 사용합니다. 기본값은 입력 구분 기호를 사용하는 것입니다.
-help 도움말 메시지를 표시하고 종료합니다.
-version 버전 정보를 출력하고 종료합니다.

사용 참고 사항

cut을 호출 할 때 -b, -c, -f 옵션 중 하나만 사용합니다.

FILE이 지정되지 않은 경우 cut은 표준 입력에서 읽습니다.

목록 지정

각 목록은 정수, 정수 범위 또는 쉼표로 구분 된 여러 정수 범위로 구성됩니다. 선택된 입력은 읽은 순서대로 기록되며 정확히 한 번만 출력됩니다. 범위는 다음으로 구성됩니다.

예를 들어 다음 텍스트를 포함하는 data.txt라는 파일이 있다고 가정 해 보겠습니다.

onetwothreefourfivealphabetagammadeltaepsilon

이 예에서 각 단어는 공백이 아닌 탭 문자로 구분됩니다. 탭 문자는 잘라 내기의 기본 구분자이므로 기본적으로 필드를 탭으로 구분 된 모든 것으로 간주합니다.

각 줄의 세 번째 필드 만 “잘라 내기”하려면 다음 명령을 사용하십시오.

cut -f 3 data.txt

… 다음을 출력합니다.

threegamma

대신 각 줄의 2 ~ 4 번째 필드 만 “잘라내려면”다음 명령을 사용하십시오.

cut -f 2-4 data.txt

… 다음을 출력합니다.

twothreefourbetagammadelta

첫 번째부터 각 줄의 두 번째 및 네 번째에서 다섯 번째 필드 (세 번째 필드 생략)에서 다음 명령을 사용합니다.

cut -f 1-2,4-5 data.txt

… 다음을 출력합니다.

onetwofourfivealphabetadeltaepsilon

또는 세 번째 필드와 그 이후의 모든 필드를 원하며 처음 두 필드는 생략합니다. 이 경우 다음 명령을 사용할 수 있습니다.

cut -f 3- data.txt

… 다음을 출력합니다.

threefourfivegammadeltaepsilon

LIST로 범위를 지정하는 것은 라인에서 문자 (-c) 또는 바이트 (-b)를 자르는 데에도 적용됩니다. 예를 들어 data.txt의 모든 행에서 세 번째부터 열두 번째 문자 만 출력하려면 다음 명령을 사용하십시오.

cut -c 3-12 data.txt

… 다음 :

etwothrephabetag

각 단어 사이의 “공백”은 실제로 단일 탭 문자이므로 두 줄의 출력에 10 개의 문자가 표시됩니다. 8 영숫자 문자와 두 개의 탭 문자. 즉, cut은 각 줄의 처음 두 문자를 생략하고 탭을 각각 한 문자로 계산합니다. 3 ~ 12 개의 문자를 출력하고 탭을 각각 하나의 문자로 계산합니다. 12 번째 이후의 모든 문자를 생략합니다.

문자 대신 바이트를 계산하면이 경우 동일한 출력이 생성됩니다. ASCII 인코딩 텍스트 파일에서 각 문자는 단일 바이트 (8 비트)로 표현되기 때문입니다. )의 데이터. 따라서 명령 :

cut -b 3-12 data.txt

…는 data.txt 파일에 대해 정확히 동일한 출력을 생성합니다.

etwothrephabetag

탭 이외의 구분 기호 지정

탭 문자는 컷이 필드를 구성하는 항목을 결정하는 데 사용하는 기본 구분 기호입니다. 따라서 파일의 필드가 이미 탭으로 구분 된 경우 다른 구분 문자를 지정할 필요가 없습니다.

그러나 구분 기호로 어떤 문자도 지정할 수 있습니다.예를 들어, / etc / passwd 파일에는 시스템의 각 사용자에 대한 정보가 한 줄에 하나씩 포함되어 있으며 각 정보 필드는 콜론 ( “:”)으로 구분됩니다. 예를 들어, 루트 사용자의 / etc / passwd 행은 다음과 같습니다.

root:x:0:0:root:/root:/bin/bash

이 필드에는 다음 정보가 다음 순서로 포함됩니다. 콜론 문자로 구분 :

  1. 사용자 이름
  2. 비밀번호 (암호화 된 경우 x로 표시)
  3. 사용자 ID 번호 (UID)
  4. 그룹 ID 번호 (GID)
  5. 설명 필드 (finger 명령에서 사용)
  6. 홈 디렉토리

사용자 이름은 줄의 첫 번째 필드이므로 시스템에 각 사용자 이름을 표시하려면 다음 명령을 사용하십시오.

cut -f 1 -d ":" /etc/passwd

… , 예 :

rootdaemonbinsyschope

(시스템 서비스에 특정한 많은 계정을 포함하여 일반적인 시스템에는 더 많은 사용자 계정이 있지만이 예에서는 사용자는 5 명뿐입니다.)

/ etc / passwd 파일에서 각 줄의 세 번째 필드는 UID (사용자 ID 번호)이므로 각 사용자 이름과 사용자 ID 번호를 표시하려면 다음 명령을 사용하십시오.

… 예를 들어 다음을 출력합니다.

root:0daemon:1bin:2sys:3chope:1000

보시다시피 출력은 다음과 같습니다. 기본적으로 입력에 지정된 동일한 구분 문자를 사용하여 구분됩니다. 이 경우 “콜론 문자 (“: “)입니다. 입력 및 출력에 대해 다른 구분 기호를 지정할 수 있습니다. 따라서 이전 명령을 실행하고 싶지만 출력이 공백으로 구분되도록하려면, 다음 명령을 사용할 수 있습니다.

cut -f 1,3 -d ":" --output-delimiter=" " /etc/passwd
root 0daemon 1bin 2sys 3chope 1000

그러나 출력을 탭으로 구분하려면 어떻게해야합니까? ? 명령 줄에 탭 문자를 지정하는 것은 인쇄 할 수없는 문자이기 때문에 조금 더 복잡합니다. 명령 줄에 지정하려면 쉘에서 “보호”해야합니다. 이것은 어떤 쉘에 따라 다르게 수행됩니다. ” 다시 사용하지만 Linux 기본 셸 (bash)에서는 $ “\ t”로 탭 문자를 지정할 수 있습니다. 따라서 명령 :

cut -f 1,3 -d ":" --output-delimiter=$"\t" /etc/passwd

…는 다음을 출력합니다. 예 :

root0daemon1bin2sys3chope1000

cut -c 3 file.txt

파일 file.txt의 모든 줄에서 나머지는 생략하고 세 번째 문자를 출력합니다.

cut -c 1-3 file.txt

파일 file.txt의 모든 줄에서 처음 세 문자를 출력하고 나머지는 생략합니다.

cut -c -3 file.txt

다음과 동일 위의 명령. file.txt의 모든 줄에서 처음 세 문자를 출력합니다.

cut -c 3- file.txt

file.txt 파일의 각 줄에서 세 번째부터 마지막 문자까지 출력합니다. 처음 두 문자.

cut -d ":" -f 1 /etc/passwd

/ etc / passwd 파일의 첫 번째 필드를 출력합니다. 여기서 필드는 콜론 ( “:”)으로 구분됩니다. / etc / passwd의 첫 번째 필드는 사용자 이름이므로이 명령은 passwd 파일의 모든 사용자 이름을 출력합니다.

grep "/bin/bash" /etc/passwd | cut -d ":" -f 1,6

첫 번째 및 여섯 번째 필드를 출력합니다. / bin / bash를 로그인 쉘로 지정하는 / etc / passwd 파일의 항목을 콜론으로 구분합니다. 이 명령은 로그인 쉘이 / bin / bash 인 사용자의 사용자 이름과 홈 디렉토리를 출력합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다