SW/리눅스

Linux : Cut 명령어 사용 방법, 예제, 명령어

얇은생각 2021. 7. 25. 07:30
반응형

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

가장 일반적인 옵션에 대한 실제 예제와 자세한 설명을 통해 컷 명령어 사용 방법을 보여드리겠습니다.

 

 

Linux : Cut 명령어 사용 방법, 예제, 명령어

 

 

cut 명령 사용 방법

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

cut OPTION... [FILE]...

 

 

선택한 부분을 잘라낼 때 구분 기호, 바이트 위치 또는 문자를 사용할지 여부를 컷오프에 알려주는 옵션은 다음과 같습니다.

-f(--fields=LIST) - 필드, 필드 집합 또는 필드 범위를 지정하여 선택합니다. 이 옵션은 가장 일반적으로 사용됩니다.

-b(--bytes=LIST) - 바이트, 바이트 세트 또는 바이트 범위를 지정하여 선택합니다.

-c(--문자=LIST) - 문자, 문자 집합 또는 문자 범위를 지정하여 선택합니다.

 

위에 나열된 옵션 중 하나만 사용할 수 있습니다.

기타 옵션은 다음과 같습니다.

-d(--delimiter) - 기본 "TAB" 구분 기호 대신 사용할 구분 기호를 지정합니다.

--complete - 선택 영역을 보완합니다. 이 옵션 잘라내기를 사용하면 선택한 바이트를 제외한 모든 바이트, 문자 또는 필드가 표시됩니다.

-s(--only-delimated) - 기본적으로 구분 기호 문자가 없는 줄을 출력합니다. 이 옵션을 사용할 때 구분 기호를 포함하지 않는 선은 잘라내기가 인쇄되지 않습니다.

--output-delimeter - 컷의 기본 동작은 입력 구분 기호를 출력 구분 기호로 사용하는 것입니다. 이 옵션을 사용하면 다른 출력 구분 기호 문자열을 지정할 수 있습니다.

 

cut 명령은 0개 이상의 입력 FILE 이름을 허용할 수 있습니다. FILE이 지정되지 않았거나 FILE이 -일 때, cut은 표준 입력에서 읽힙니다.

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

 - N번째 필드, 바이트 또는 문자를 1부터 시작합니다.

- N번째 필드(바이트 또는 문자)에서 줄의 끝까지의 N입니다.

- N번째 필드에서 Mth 필드, 바이트 또는 문자로 연결되는 N-M입니다.

- M은 첫 번째 필드부터 Mth 필드, 바이트 또는 문자까지입니다.

 

 

 

필드별로 자르는 방법

잘라낼 필드를 지정하려면 -f 옵션을 사용하여 명령을 호출합니다. 지정하지 않은 경우 기본 구분 기호는 "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

 

 

또는 첫 번째 필드부터 네 번째 필드까지 표시할 경우 다음을 수행합니다.

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

 

 

 

선택 항목을 보완하는 방법

선택 필드 목록을 보완하려면 --complete 옵션을 사용하십시오. -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바이트로 나타낼 수 있습니다.

-b(--bytes) 옵션은 지정된 바이트 위치로 지정된 각 줄에서 섹션을 잘라내는 명령을 나타냅니다. 

다음 예에서는 2바이트가 걸리는 ü 문자를 사용하고 있습니다. 

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 코어유틸에 번들로 제공된 컷 버전은 문자로 잘라내는 옵션이 없습니다. -c 옵션을 사용할 때 컷은 -b 옵션을 사용할 때와 동일하게 동작합니다.

 

 

 

cut 예제

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

 

모든 사용자 목록을 가져오기

getent passwd 명령의 출력이 cut으로 전달되어 :를 구분 기호로 사용하여 첫 번째 필드를 인쇄합니다.

getent passwd | cut -d ':' -f1

 

 

출력에는 모든 시스템 사용자의 목록이 표시됩니다.

 

 

 

가장 자주 사용하는 10개의 명령 보기

다음 예에서는 잘라내기를 사용하여 기록 명령 출력의 각 행에서 처음 8바이트를 제거합니다.

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

 

반응형