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 " "}'