운영체제/Linux

cut 명령어에 대해서

ahgle 2023. 3. 1. 13:30
728x90
반응형

안녕하세요, 아글입니다.

 

오늘은 

cut 명령어 에 대해서 알아보겠습니다.

 

cut 명령어란?

cut은 의 사전적 의미는 '자르다, 절개하다' 입니다. 단어 의미 그대로 특정 파일의 열을 출력하여 제거하거나 원하는 열만 출력할 수 있는 명령어입니다. 텍스트 문서의 특정 필드를 제거, 편집하며  awk, | , grep 등 다양한 명령어, 조건과 결합하여 원하는 내용을 출력할 수 있습니다.

 

cut 명령어 사용 방법

#cut [옵션] [파일 이름]

[root@test www]# cut [옵션] [파일 이름]

 

cut 명령어 옵션

  • -b : 바이트(byte)를 기준으 출력
  • -c : 문자수를 기준으로 출력
  • -d : 필드 구분자를 지정
  • -f : 지정된 필드를 출력
  • -s : 필드 구분자를 포함하지 않는 행을 출력

 

사용자 정보가 담겨 있는 /etc/passwd 파일 일부를 살펴봅시다.

[root@test~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

 

이제 /etc/passwd 파일을 이용하여 실습을 진행해보겠습니다.

 

먼저, -b옵션을 사용해보겠습니다.

-b 옵션은 지정된 바이트(byte)를 출력하는  옵션이었죠?

 

root

bin

daemon

 

이런 식으로 시작하는 파일 중 3번째 바이트(3번째 글자)만 출력해보겠습니다.

(root면 o를, bin이면 n을, daemon이면 e를 출력!)

 

문법: cut -b[지정 바이트] [파일이름]

▶ cut -b3 /etc/passwd

[root@test ~]# cut -b3 /etc/passwd
o
n
e
m
:
n
u
l
i
e
m
p
b

 

이번에는 -c 옵션을 사용해보겠습니다.

-c 옵션은 지정된 문자 수를 기준으로 출력하는 옵션이었죠?

 

각 행의 첫 번째 글자만 출력해보겠습니다. 첫 번째 글자이므로 -c 옵션에 숫자 1을 지정합니다.

 

문법: cut -c[지정 문자 수] [파일이름]

▶ cut -c1 /etc/passwd

[root@test ~]# cut -c 1 /etc/passwd
r
b
d
a
l
s
s
h
m
o
g
f
n

 

이를 응용해서 지정한 문자 수를 출력해볼게요.

1~4번 째 글자만 출력해보겠습니다.

▶ cut -c1-3 /etc/passwd

[root@test ~]# cut -c1-4 /etc/passwd
root
bin:
daem
adm:
lp:x
sync
shut
halt
mail
oper
game
ftp:
nobo

첫번 째 부터 4번 째 글자까지만 출력이 되네요.

그런데, 저는 단순이 글자 수로 출력하는 것이 아닌, 각 사용자명만 출력하도록 첫 번째 필드를 출력해보고 싶습니다.

/etc/passwd 가 각  필드를 무엇으로  구분하고 있는지 구분자부터 먼저 확인해보아야 합니다.

 

아래를 보면 : (콜론) 부호로 각  필드를 구분하는 것을 알 수 있습니다.

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

 

문법 : cut -d[구분자] -f[필드번호] /etc/passwd

▶  cut -d: -f1 /etc/passwd

[root@test ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody

자 이제 우리가 원하는 사용자 명에 해당하는 첫 번째 필드만 출력이 되었습니다. 

 

이제 이를 응용한 몇가지 사례를 더 확인해볼게요.

root, bin, daemon 등 다양한 기본 유저 정보가 담겨있습니다. 그런데 우리는 각 사용자가 어떤 셸을 사용하는 지만 확인하고 싶습니다.

내용을 살펴보면 :라는 구분자를 이용하여 마지막인 7번 째 필드에 사용자의 셸 정보가 있습니다.

 

-d는 구분자를 지정하는  옵션이고, -f 은 지정된 필드를 출력하는  옵션이었죠?

: 를 구분자로 지정하고 :로 구분하는  각 필드 중 7번 째 필드를 출력하면 우리가 원하는 셸 정보만 출력이 가능합니다.

 

옵션 뒤에 지정하는 구분자나 필드 번호는 옵션과 붙여서 써도, 띄어서 써도 상관없습니다! 😊

 

문법 : cut -d[구분자] -f[필드번호] [파일이름]

▶  cut -d: -f7 /etc/passwd

[root@test ~]# cut -d: -f7 /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin

 
※단, 옵션과 옵션은 반드시 띄어서 사용해주세요!

필드 구분자 지정 옵션인 -d 사용, : 로 구분자를 지정 후 바로 지정된 필드를 출력 후 -f 옵션을 사용하면

아래와 같이 에러가 발생합니다.

[root@test ~]# cut -d :-f 7 /etc/passwd
cut: the delimiter must be a single character
Try 'cut --help' for more information.

 

그런데 이렇게 보니, 셸 정보만 나와서 어떤 사용자가 어떤 셸을  사용하는 지는 확인이 불가하네요.

그럼 아래와 같이 어떤 사용자가 어떤 셸을 사용하는 지를 출력해보겠습니다.

 

사용자는 : 를 구분자로 보았을 때 1번째 필드에, 셸은 7번째 필드에 있습니다.

 

문법 : cut -d[구분자] -f[필드번호],[필드번호] [파일이름]

▶  cut -d: -f1,7 /etc/passwd

[root@test ~]# cut -d: -f1,7 /etc/passwd
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin
operator:/sbin/nologin
games:/sbin/nologin
ftp:/sbin/nologin
nobody:/sbin/nologin

 

 

 

오늘은 특정 필드나 문자열을 출력하고 싶을 때 사용하는 cut 명령어 대해서 알아보았습니다. 

리눅스에서는 cut 명령어를 포함해서 다양한 명령어와 조건식을 혼합해서 사용하면 원하는 정보를 쉽게 출력할 수 있습니다. 

 

관련하여 다른 명령어가 궁금하신 경우 아래의 링크를 통해 확인 가능합니다!

https://wowy0211.tistory.com/37

 

[명령어] grep에 대해서 (옵션 정리)

안녕하세요, 아글입니다. 오늘은 grep 명령어에 대해서 알아보겠습니다. 특정 파일에서 조건으로 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어입니다. 다른 명령어들과 조합

wowy0211.tistory.com

 

 

https://wowy0211.tistory.com/30

 

[명령어] split 사용방법. '하나의 파일을 여러 개의 작은 파일로 분리해보자'

오늘은 split 명령어를 사용해보고 활용 방법에 대해 알아보겠다 먼저, split의 사전적의미부터 확인해보자. 의미를 알면 명령어 사용이 더욱 익숙해진다. split : 나뉘다, 쪼개지다 split 의 뜻 그대

wowy0211.tistory.com

https://wowy0211.tistory.com/11

 

rsync명령어에 대해서 (옵션 정리)

rsync rsync 명령어는 서버 간 파일 또는 디렉토리 등을 이동시키는 명령어이다. 유사 명령어인 scp는 모든 파일을 전송하는 반면, rsync는 목적지 서버와 파일을 비교하여 변경 파일만 전송함으로써

wowy0211.tistory.com

 

728x90