안녕하세요, 아글입니다.
오늘은
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
https://wowy0211.tistory.com/30
https://wowy0211.tistory.com/11
'운영체제 > Linux' 카테고리의 다른 글
[아파치]CGI 와 UserDir 사용 (feat. 스크립트 언어 루비, 파이썬) (0) | 2023.03.02 |
---|---|
아파치 웹서버에 대해서-2 (feat. 서비스 명령어, PHP) (0) | 2023.02.28 |
Apache 웹서버에 대해서(feat. httpd.conf) (0) | 2023.02.27 |
passwd 명령어에 대해서 (0) | 2023.02.26 |
커널 컴파일에 대해서 (0) | 2023.02.26 |