리눅스 기초 다지기 - 38. awk

 

awk

: 입력 데이터를 선택 및 가공하여 출력하는 명령어

 

df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               4.0M     0  4.0M   0% /dev
tmpfs                  3.8G     0  3.8G   0% /dev/shm
tmpfs                  1.5G  8.7M  1.5G   1% /run
/dev/mapper/rl-root     48G  1.1G   44G   3% /
/dev/sda1              920M  173M  684M  21% /boot
/dev/mapper/hk-openstack2  974M   24K  907M   1% /test/openstack2
/dev/sda3              952M  7.0M  945M   1% /boot/efi
/dev/mapper/hk-openstack    12G  120M   12G   1% /test/openstack
tmpfs                  768M     0  768M   0% /run/user/0

 

df -h 명령어를 통해 출력 내용이 있다.

각 라인을 레코드라 하며, 공백을 기준으로 각 필드로 이루어져 있다.

 

 

명령어

 

첫 번째 필드 출력

df -h | awk '{ print $1 }'
Filesystem
devtmpfs
tmpfs
tmpfs
/dev/mapper/rl-root
/dev/sda1
/dev/mapper/hk-openstack2
/dev/sda3
/dev/mapper/hk-openstack
tmpfs

 

마지막 필드 출력

df -h | awk '{ print $NF }'
on
/dev
/dev/shm
/run
/
/boot
/test/openstack2
/boot/efi
/test/openstack
/run/user/0

 

마지막에서 두 번째 필드 출력

df -h | awk '{ print $(NF-1) }'
Mounted
0%
0%
1%
3%
21%
1%
1%
1%
0%

 

특정 문자열 포함하는 레코드만 출력

df -h | awk '/sd/'
/dev/sda1              920M  173M  684M  21% /boot
/dev/sda3              952M  7.0M  945M   1% /boot/efi

 

 

특정 필드 합 구하기

df -h | grep -v Filesystem | grep -v tmpfs
/dev/mapper/rl-root     48G  1.1G   44G   3% /
/dev/sda1              920M  173M  684M  21% /boot
/dev/mapper/hk-openstack2  974M   24K  907M   1% /test/openstack2
/dev/sda3              952M  7.0M  945M   1% /boot/efi
/dev/mapper/hk-openstack    12G  120M   12G   1% /test/openstack

df -h | grep -v Filesystem | grep -v tmpfs | awk '{sum += $5} END { print sum }'
27

 

필드 구분 문자 변경

df -h | grep -v Filesystem | grep -v tmpfs | awk -F '/' '{ print $2 }'
dev
dev
dev
dev
dev