기계적 인조 인간

예제가있는 Linux cut 명령

BASH lesson 3 - grep and cut commands

BASH lesson 3 - grep and cut commands

차례:

Anonim

Linux 및 Unix 시스템에는 텍스트 파일을 처리하고 필터링 할 수있는 많은 유틸리티가 있습니다. 잘라내 기는 지정된 파일이나 파이프 된 데이터에서 줄의 일부를 잘라 내고 결과를 표준 출력으로 인쇄 할 수있는 명령 줄 유틸리티입니다. 구분 기호, 바이트 위치 및 문자로 줄의 일부를 자르는 데 사용할 수 있습니다.

이 튜토리얼에서는 가장 일반적인 컷 옵션에 대한 실제적인 예와 자세한 설명을 통해 Linux 컷 명령을 사용하는 방법을 보여줍니다.

잘라 내기 명령을 사용하는 방법

cut 명령의 구문은 다음과 같습니다.

cut OPTION……

cut 명령을 사용할 때는 다음 옵션 중 하나만 사용해야합니다.

  • -f ( --fields=LIST )-필드, 필드 세트 또는 필드 범위를 지정하여 선택하십시오. 가장 일반적으로 사용되는 옵션입니다. -b ( --bytes=LIST )-바이트, 바이트 세트 또는 바이트 범위를 지정하여 선택하십시오. -c ( --characters=LIST )-문자, 문자 세트 또는 문자 범위를 지정하여 선택하십시오.

다른 옵션은 다음과 같습니다.

  • -d ( --delimiter )-기본 "TAB"분리 문자 대신 사용될 분리 문자를 지정하십시오. --complement 선택을 보완합니다. 이 옵션을 사용하면 cut은 선택된 것을 제외한 모든 바이트, 문자 또는 필드를 표시합니다. -s ( --only-delimited )-기본적으로 잘라내 --only-delimited 구분 문자가없는 행을 인쇄합니다. 이 옵션을 사용하면 구분자를 포함하지 않는 줄은 인쇄되지 않습니다. --output-delimiter 기본값은 입력 구분 기호를 출력 구분 기호로 사용하는 것입니다. 이 옵션을 사용하면 다른 출력 구분 기호 문자열을 지정할 수 있습니다.

cut 명령은 0 개 이상의 입력 FILE 이름을 사용할 수 있습니다. FILE을 지정하지 않거나 FILE이 - 경우 cut은 표준 입력을 읽습니다.

-f , -b -c 옵션에 전달 된 LIST 인수는 정수, 쉼표로 구분 된 여러 정수, 정수 범위 또는 쉼표로 구분 된 여러 정수 범위 일 수 있습니다. 각 범위는 다음 중 하나 일 수 있습니다.

  • N 번째 필드, 바이트 또는 문자. 1부터 시작하여 N 번째 필드, 바이트 또는 문자에서 행의 끝까지. N 번째에서 M 번째까지의 NM 필드, 바이트 또는 문자. 첫 번째에서 M 번째까지 -M , 바이트 또는 문자.

필드별로 자르는 방법

잘라 내기 명령은 주로 각 파일 줄 또는 표준 입력에서 선택한 필드를 표시하는 데 사용됩니다. 지정하지 않으면 기본 구분 기호는 "TAB"입니다.

아래 예에서는 다음 파일을 사용합니다. 모든 필드는 탭으로 구분됩니다.

test.txt

245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978

첫 번째와 세 번째 필드를 표시하려면 다음을 사용하십시오.

cut test.txt -f 1, 3

245:789 M:4540 535:763 M:3476

또는 1 ~ 4 번째 필드를 표시하려는 경우:

cut test.txt -f -4

245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales

구분자를 기준으로 자르는 방법

분리 문자를 기준으로 자르려면 -d 옵션과 사용하려는 분리 문자를 사용하십시오.

예를 들어 ":"을 구분 기호로 사용하여 첫 번째 및 세 번째 필드를 표시하려면 다음을 입력하십시오.

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

단일 문자를 구분 기호로 사용할 수 있습니다. 다음 예제에서는 공백 문자를 구분 기호로 사용하고 두 번째 필드를 인쇄합니다.

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2

ipsum

선택을 보완하는 방법

선택 필드 목록을 보완하려면 --complement 옵션을 사용 --complement . -f 옵션으로 선택하지 않은 필드 만 인쇄합니다.

다음 명령은 첫 번째와 세 번째를 제외한 모든 필드를 인쇄합니다.

cut test.txt -f 1, 3 --complement

4567 Admin 01:10:1980 4987 Sales 11:04:1978

출력 구분 기호를 지정하는 방법

출력 분리 문자를 지정하려면 --output-delimiter 옵션을 사용하십시오. 예를 들어 출력 구분 기호를 _ 로 설정하려면 다음을 사용하십시오.

cut test.txt -f 1, 3 --output-delimiter='_'

245:789_M:4540 535:763_M:3476

바이트와 ​​문자로 자르는 방법

더 진행하기 전에 바이트와 문자를 구별 해 봅시다.

1 바이트는 8 비트이며 256 개의 서로 다른 값을 나타낼 수 있습니다. ASCII 표준이 설정 될 때 영어 작업에 필요한 모든 문자, 숫자 및 기호를 고려했습니다. ASCII 문자 표에는 128자가 있으며 각 문자는 1 바이트로 표시됩니다. 컴퓨터가 전 세계적으로 대중화되기 시작했을 때, 기술 회사는 다른 언어와 256자를 초과하는 언어에 대해 새로운 문자 인코딩을 도입하기 시작했으며 간단한 1 대 1 매핑은 불가능했습니다. 이로 인해 문서 공유 또는 웹 사이트 탐색과 같은 다양한 문제가 발생하고 세계의 대부분의 쓰기 시스템을 처리 할 수있는 새로운 유니 코드 표준이 필요했습니다. UTF-8은 이러한 문제를 해결하기 위해 만들어졌습니다. UTF-8에서 모든 문자가 1 바이트로 표시되는 것은 아닙니다. 문자는 1 바이트에서 4 바이트로 표현할 수 있습니다.

다음 예에서는 2 바이트를 사용하는 ü 문자를 사용합니다.

바이트 위치를 지정하여 행의 섹션을 잘라내려면 -b ( --bytes ) 옵션을 사용하십시오.

5 번째 바이트를 선택하십시오:

echo 'drüberspringen' | cut -b 5

b

5 번째, 9 번째 및 13 번째 바이트를 선택하십시오.

echo 'drüberspringen' | cut -b 5, 9, 13

bpg

1 ~ 5 번째 바이트 범위를 선택하십시오.

echo 'drüberspringen' | cut -b 1-5

drüb

이 기사를 작성할 당시 GNU coreutils에 번들로 제공되는 cut 버전에는 문자별로 잘라낼 수있는 옵션이 없습니다. -c 옵션을 사용할 때 cut은 -b 옵션을 사용할 때와 동일하게 작동합니다.

컷 예

절단 명령은 일반적으로 배관을 통해 다른 명령과 함께 사용됩니다. 다음은 몇 가지 예입니다.

모든 사용자의 목록을 가져옵니다

getent passwd 명령의 출력이 cut 으로 전달되어 cut 을 사용하여 첫 번째 파일을 인쇄합니다.

getent passwd | cut -d ':' -f1

가장 자주 사용되는 10 가지 명령보기

다음 예제에서 cut은 history 명령 출력의 각 행에서 처음 8 바이트를 제거하는 데 사용됩니다.

history | cut -c8- | sort | uniq -c | sort -rn | head

결론

이제 Linux cut 명령을 사용하는 방법에 대해 잘 알고 있어야합니다. 매우 유용하지만 cut 명령에는 몇 가지 제한이 있습니다. 구분자로 두 개 이상의 문자를 지정할 수 없으며 여러 데시 미터를 지원하지 않습니다.

컷 터미널