stream 에서 데이터를 처리하는 linux awk 사용법

awk 는 Unix 의 개발에 관여한 Brian Kernighan 등이 만든 프로그래밍 언어로 파일에서 레코드 추출 및 처리 작업에 특화되어 있습니다.


이후에 Perl 이 발표되고 python 같이 훌륭한 script 언어가 나왔지만 쉘에서 간단한 작업을 하거나 스크립트 작성시에는 유용하게 사용할 수 있습니다.

문법

field 구분자

-F 옵션으로 입력에서 필드 구분자를 지정할 수 있으며 생략할 경우 공백입니다.

awk -F ',' '{print $NF}' filename




응용 예

killall 구현

프로세스를 PID 가 아닌 이름으로 종료할 수 있는 kilall 명령어를 awk 로 비슷하게 흉내낼 수 있습니다.

ps -eaf | grep java | grep -v grep | awk '{print "kill -INT "$2}' | sh -x


설치한 패키지 목록 뽑기

RedHat 이나 CentOS 에서 yum 으로 설치한 특정 패키지를 다른 곳에도 설치할 경우 awk 로 처리할 수 있습니다.

다음은 설치된 모든 php 패키지의 목록을 뽑고 맨 앞에 "yum install -y " 를 붙여서 출력합니다.

sudo yum list installed | grep php | awk 'BEGIN {printf "yum install -y "} {printf $1 " "}'



같이 보기

Ref