awk{ }
정규 표현식 완전 해부와 실습(개정판) | ||
ps -ef | grep httpd이러면 ps -ef의 한 결과 중 httpd가 포함된 정보들이 주루룩 나올 것이다. 이는 awk를 이용해서 다음과 같이 할 수 있다.
ps -ef | awk "/httpd/ {print}"혹은
ps -ef | awk "/httpd/ {print $0}"$0 은 입력라인 전체를 의미한다.
UID PID PPID C STIME TTY TIME CMD이렇게 칸이 띄워져 있는 텍스트의 한 라인을 awk에 입력하면 awk는 띄워 쓰기 기준으로 각 토큰들을 $1, $2, $3 … 의 식으로 인식한다. 다음과 같은 문장이 입력된다면
1 철수 초등학생 10세Awk 는 공백을 기준으로 토큰을 잘라내서 "1"은 $1, "철수" 는 $2, "초등학생" 은 $3, 그리고 "10세"는 $4와 같은 식으로 사용할 수 있다. 만약 ps -ef 의 결과 중 UID와 C만 출력하고 싶다면
ps -ef | awk "/httpd/ {print $1, $4}"이와 같이 입력하면 된다. AWK에서는 BEGIN과 END를 이용해서 변수의 선언을 비롯한 초기화, 그리고 모든 처리가 끝났을 때 수행할 동작을 지정할 수 있다. httpd들의 UID, PID, C 필드를 출력하고, 마지막에 C필드들의 합(CPU의 사용시간)을 출력해 보고 싶다면 다음과 같이 입력한다.
ps -ef | awk "/httpd/ {print $1, $2, $4; sum += $4} END {print "sum = ", sum}"
Regular Expression Pocket Reference | ||
test4 24473 0.5 test4 24474 0.1 test4 24475 0.7 test4 24476 2.0 test4 24477 0.0 test4 26306 0.0 web1 87796 1.0 web1l 87800 10.0 web1 88186 0.0 web1 127437 0.0 web1 314856 0.0 sum = 14.3awk로 처리해야 할 파일이 | 와 같이 파이프로 제공되지 않고 특정파일로 제공된다면 awk 뒤에 파일명을 적어주면 된다. test.txt 를 읽어서 뭔가를 처리하고 싶다면 다음과 같이 입력해주면 된다.
awk "program_text" test.txtawk에서도 다른 유틸리티나 프로그래밍 언어와 같이 조건문을 제공한다. CPU 사용시간이 1이상인 프로세스들을 출력하고 그 합을 보고 싶다면 다음과 같은 형식으로 해주면 된다.
ps -ef | awk "/httpd/ {if ($4 >= 1) print $1, $2, $4; sum += $4} END {print "sum = ", sum}"이번 기사에서는 간단하게 AWK를 소개하는 정도의 기사를 적어보았다. 다음에 시간이 허락된다면, 좀 더 복잡한 사용법과 함께 Awk와 함께 자주 사용되는 Sed에 대해서도 소개해 볼까한다.
이전 글 : 『임베디드 하드웨어 이해와 설계』 출간에 붙여…
최신 콘텐츠