awk 란
유래는 역시 사람이름이다. Alfred Aho, Peter Weinberger, Brian Kernighan 3명의 이니셜을 가져와 awk라고 불리게 되었다구한다.
데이터를 조작하고 리포트를 생성하기 위해 사용하는 언어다. 데이터를 조작할 수 있기 때문에 쉘 스크립트에서 사용되는 필수 도구이며, 작은 데이터베이스를 관리하기 위해서도 필수다. 리눅스에서 사용하는 awk는 GNU 버전의 gawk로 심볼릭 링크되어 있다.
1. 전체 내용 출력
awk '{ print }' ./test.txt
2. 필드 값 출력
# awk '{ print 필드값 }' ./test.txt
awk '{ print $1 }' ./test.txt
awk '{ print $2 }' ./test.txt
3. 필드 값 + 문자열 출력
# awk '{ print "문자열" 필드값 }' ./test.txt
awk '{ print "first : "$1 }' ./test.txt
awk '{ print "second : "$1 }' ./test.txt
4. 지정된 문자열 포함 출력
awk '/test/' ./test.txt
awk '/test[0-9]/' ./test.txt
5. 특정 필드 값 비교
awk '$1 == 1 { print $1 }' ./test.txt
awk '$1 > 1 { print $1 }' ./test.txt
awk '$1 < 1 { print $1 }' ./test.txt
awk 예제
예제 : /etc/passwd 에서
1. nginx 행 출력
cat /etc/passwd | awk 'NR==38 {print}'
2. nginx 행에서 맨 끝 field 출력
cat /etc/passwd | grep -F nginx | awk -F':' '{print $NF}'
3. user 와 nginx 2행을 출력
cat /etc/passwd | grep -P "^nginx|^user"* | awk '{print}'
cat /etc/passwd | awk -F ":" '$1 == "user" || $1 == "nginx" {print $0}'
4. 원하는 행만 출력
user : /home/user
nginx : /var/lib/nginx
cat /etc/passwd | awk -F ":" '$1 == "user" || $1 == "nginx" {print $1 ":" $6}'
5. 해당 데이터의 ip 주소값 출력
ip a
ip a |awk '/^[1-9]/ {printf $2} /inet[ ]/ {split($2,arr," "); print arr[1]}'
6. 정보 출력
NAME = "CentOS Stream"
VERSION = "8"
ID = "centos"
cat /etc/os-release | awk 'NR==1 {print} NR==2{print} NR==3{print}'
'Linux' 카테고리의 다른 글
[centOS7] nginx 설치하기 (0) | 2022.11.23 |
---|---|
[centOS8] iptables 사용하기 (0) | 2022.11.22 |
Linux shell script 폴더 100개 만들기 (for + if문) (0) | 2022.11.18 |
VMware + CentOS 8 + 한글 설정하기(ibus-hangul) (0) | 2022.11.18 |
VMware + CentOS 8 + SSH 패키지 다운 받기 (0) | 2022.11.17 |
댓글