Linux cut 명령
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
이 필드에는 다음 정보가 다음 순서로 포함됩니다. 콜론 문자로 구분 :
- 사용자 이름
- 비밀번호 (암호화 된 경우 x로 표시)
- 사용자 ID 번호 (UID)
- 그룹 ID 번호 (GID)
- 설명 필드 (finger 명령에서 사용)
- 홈 디렉토리
- 쉘
사용자 이름은 줄의 첫 번째 필드이므로 시스템에 각 사용자 이름을 표시하려면 다음 명령을 사용하십시오.
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 인 사용자의 사용자 이름과 홈 디렉토리를 출력합니다.