리눅스 및 유닉스 시스템에서는 텍스트 파일을 처리하고 필터링할 수 있는 유틸리티가 많이 있습니다. 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
'SW > 리눅스' 카테고리의 다른 글
Ubuntu 18.04 : Wine 설치, 사용 방법, 예제, 명령어 (2) | 2021.07.27 |
---|---|
Linux : SFTP Chroot Jail 설정 방법, 예제, 명령어 (0) | 2021.07.26 |
Ubuntu 18.04 : Postman 설치 방법, 예제, 명령어 (0) | 2021.07.24 |
Linux : 리눅스 버전 확인 방법, 예제, 명령어 (0) | 2021.07.23 |
Linux : 디렉토리 사이즈 얻는 방법, 예제, 명령어 (0) | 2021.07.22 |