이 툴의 어원은 프로그램을 개발한 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는 광범위한 연산자들과 뛰어난 성능을 가지고 있지만 여기서는 몇 가지만 살펴보았습니다.