Linux 명령어 | 파일 관리 | awk 패턴 탐색 처리


awk 명령어

패턴 탐색과 처리를 위한 명령어로 간단하게 파일에서 결과를 추려내고 가공하여 원하는 결과물을 만들어내는 명령어이다.

awk는 초기 개발자 Aho, Weinberger, Kernighan의 세 명의 성의 앞글자를 따서 붙여졌다. GNU 프로젝트에서 만들어진 텍스트 처리 프로그래밍 언어로 유닉스 계열의 OS에서 사용 가능하며, 텍스트 형태로 되어있는 입력 데이터를 행과 단어 별로 처리해 출력한다.

사용법

$ awk 'pattern' filename
$ awk '{action}'  filename
$ awk 'pattern' '{action}' filename

$ awk [ -F fs ] [ -v var=value ] [ 'prog' | -f progfile ] [ file ...  ]

awk 명령어 사용 예제

예시1) 명령어로 출력되는 내용중에 원하는 필드만 표시

$ date
2018년 6월 24일 일요일 17시 16분 54초 KST
$ date | awk '{print $1}'
2018년

날짜를 표시하는 date에서 년도만 추출하여 표시한다.

예제2) 파일 내용을 추출하여 원하는 필드만 표시

$ cat sample.txt 
foo 한글 12 
dev 데브 24
kuma 쿠마 33
hello 헬로 55

kuma를 포함하는 라인 추출하여 표시

$ awk '/kuma/' sample.txt 
kuma 쿠마 33

공백 기준으로 두번째, 첫번째 필드만 표시

$ awk '{print $2, $1}' sample.txt
한글 foo
데브 dev
쿠마 kuma
헬로 hello

kuma를 포함하는 라인을 추출하여, 공백 기준으로 두번째, 첫번째 필드만 표시

$ awk '/kuma/{print $2, $1}' sample.txt
쿠마 kuma

예제3) 필드 구분자를 통한 표시

공백을 구분자로 하여 필드를 나눈 후 9번째 필드을 표시한다.

$ ls -al
total 59384
drwxr-xr-x  28 kimkc  staff       952  6 22 22:29 .
drwxr-xr-x+ 80 kimkc  staff      2720  6 24 16:57 ..
drwxr-xr-x  21 kimkc  staff       714  6 24 16:57 devkuma
drwxr-xr-x  18 kimkc  staff       612  1  2 23:12 tutorial
drwxr-xr-x  13 kimkc  staff       442  6 16 07:56 workspace
$ ls -al | awk -F " " '{print $9}'
.
..
devkuma
tutorial
workspace