awk를 이용하여 조건에 맞는 값 출력하기 + | 이용하여 다중 명령
1. awk
1.1. awk 란?
Awk는 데이터를 조작하고 리포트를 생성하기 위해 사용하는 언어이다. 리눅스에서 사용하는 awk는 GNU 버전의 gawk로 심볼릭 링크되어 있다.
1.2. awk 도움말 보는 방법
awk –help 또는 man awk 입력
awk는 Alfred aho, peter Weinberger, brian Kernighan 3명이 만들었다.
참고 | awk 명령에서 END 블록을 사용할 경우에는 반드시 아규먼트 파일명을 적어주어야 한다. Begin 블록만 사용할 경우에는 아규먼트 파일명을 적지 않아도 동작한다.
1.3. awk 프로그래밍 형식
작은 따옴표로 둘러싸인 패턴이나 액션을 입력한다.
만약 입력 파일을 지정하지 않으면 키보드 입력에 의한 표준 입력(stdin)으로부터 입력을 받게 된다.
그리고 awk는 입력된 라인들의 데이터들을 공백 또는 탭의 기준으로 분리하여 $1부터 각각의 필드 변수로 분리하여 인식한다.
1.3.1. 파일로부터의 입력
awk ‘pattern {action}’ filename
awk를 테스트 하기 위해 sedtest.txt를 아래와 같이 만든다.
vi sedtest.txt
tomcat was
jeus was
jboss was
wildfly was
oracle db
tibero db
postgresql db
cubrid db
mysql db
mssql db
mariadb db
| ‘was’를 포함하고 있는 라인을 출력하기
[fido@localhost ~]$ awk '/was/' sedtest.txt
| 첫번째로 나오는 필드 출력하기
[fido@localhost ~]$ awk '{print $1}' sedtest.txt
| was가 포함된 첫번째 두번째 필드 출력하기
[fido@localhost ~]$ awk '/was/{print $1, $2}' sedtest.txt
1.3.1. 명령어로부터의 입력
명령어로부터 입력을 받기 위해 ‘|’ (파이프)를 사용할 수 있다.
형식 : command | awk ‘pattern {action}’
df -h는 df 명령어는 하드 디스크 용량을 확인하는 명령어인데, -h 옵션은 human(사람)이 보기 쉽게 하는 옵션이다.
예를 들어 awk를 이용하여 $4 Use 필드에서 10%가 넘는 것을 뽑아 볼 수 있다.
[fido@localhost ~]$ df -h | awk '$5 > 10'
분리자를 지정하지 않은 경우에는 “공백”으로 구분된다. 필드 분리자로 탭이나 콜론(:) 대시(-)와 같은 다른문자에 의해서도 분리될 수 있다.