Linux ETC

awk 를 이용한 패턴 처리

2008.05.19 20:32

호스트웨이 조회 수:24463

이 툴의 어원은 프로그램을 개발한 Alfred Aho, Peter Weinberger, Brian Kernigham의 머리글자를 따서 명명되어
졌습니다. awk는 C 문법을 연상시키는 완전한 형태의 텍스트 처리 언어입니다.

 
 먼저 awk 이용하여 간단한 패턴 처리를 해보도록 하겠습니다. 
[root@sakang apache2]# ls -al
total 60
drwxr-xr-x   15 root     root         4096 Jan  8  2007 .
drwxr-xr-x   17 root     root         4096 May 30 23:41 ..
drwxr-xr-x    2 root     root         4096 Jan  8  2007 bin
drwxr-xr-x    2 root     root         4096 Jan  8  2007 build
drwxr-xr-x    2 root     root         4096 Jan  8  2007 cgi-bin
drwxr-xr-x    4 root     root         4096 Jun  7 22:20 conf
drwxr-xr-x    3 root     root         4096 Jan  8  2007 error
drwxr-xr-x    3 root     root         4096 Jun  7 22:21 htdocs
drwxr-xr-x    3 root     root         4096 Jan  8  2007 icons
drwxr-xr-x    2 root     root         4096 Jan  8  2007 include
drwxr-xr-x    3 root     root         4096 Jan  8  2007 lib
drwxr-xr-x    2 root     root         4096 Jun  7 01:48 logs
drwxr-xr-x    4 root     root         4096 Jan  8  2007 man
drwxr-xr-x   14 root     root         4096 Jul 28  2006 manual
drwxr-xr-x    2 root     root         4096 Jan  8  2007 modules


위의 출력 결과에서 9번째 필드만을 검색해 보겠습니다.

[root@sakang apache2]# ls -al | awk '{print $9}'   

.
..
bin
build
cgi-bin
conf
error
htdocs
icons
include
lib
logs
man
manual
modules


  다음은 파일에서 데이터를 추출하는 방법입니다.

[root@sakang apache2]# awk '/root/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

 passwd 파일에서 root 라는 단어가 들어간 행만 출력합니다. 물론 여기서도 원하는 필드만 검색할 수가 있습니다. root 라는 단어가 들어간 행의 첫번째 필드만 출력하려면 아래처럼 하시면 됩니다. 

[root@sakang apache2]# awk -F: '/root/{print $1}' /etc/passwd
root
operator

 awk 에서 연산자를 사용하는 방법을 알아보겠습니다.
 아래 커맨드는 비교연산자를 사용한 것 입니다.

[root@sakang /]# ls -al | awk ' $5 > 4096 {print $5}'
118784
16384
8192
8192

 위 예제는 비교연산자를 사용하여 5번째 필드에서 4096 보다 큰 값만 출력하고 있습니다.
 
 awk는 광범위한 연산자들과 뛰어난 성능을 가지고 있지만 여기서는 몇 가지만 살펴보았습니다.
번호 제목 글쓴이 날짜 조회 수
306 리눅스 커널 버전 의미 file 호스트웨이 2012.04.20 27099
305 debian 에서 CSR decoding 시에 발생되는 에러(40 The CSR uses a key that is believed to have been compromised!) HOSTWAY 2008.12.04 27055
304 원하는 용량만큼 분할해서 압축하기 sylee 2008.05.15 27050
303 diff 사용방법 sylee 2008.05.15 26967
302 가용할 수 있는 물리적 메모리를 최대한 이용해봅시다. hostway 2008.05.14 26669
301 부하 테스트 2편 – Web Test 호스트웨이 2012.04.27 26662
300 sudo 사용하기 호스트웨이 2008.05.19 26558
299 at 으로 작업 예약 하기 호스트웨이 2008.05.19 26293
298 리눅스 ls 디렉토리 혹은 파일 별 출력하기 file 호스트웨이 2012.06.22 26084
297 find 명령 1 sylee 2008.05.14 25983
296 mrtg를 이용한 시스템자원 모니터링(debian 5.0) jook 2009.06.02 25923
295 watch 로 시스템 모니터링 하기 호스트웨이 2008.05.19 25537
294 XFS파일 장점및 단점 호스트웨이 2012.07.06 25476
293 ipv6 비활성화 하기 호스트웨이 2012.04.06 25464
292 XFS 파티션 설치 및 마운트 (CentOS 기준) 호스트웨이 2015.09.09 25380
291 vsftp에서 업로드, 다운로드 전송속도 제한하기 file 호스트웨이 2012.05.05 25284
290 CPU core 별 사용량 확인 하기 호스트웨이 2012.06.08 25278
289 rsync를 사용하여 데이터 백업 하기 jook 2009.04.25 25182
288 ncftp의 bookmark 기능 sylee 2008.05.15 25075
287 비프음 콘트롤 호스트웨이 2009.02.12 24943