본문 바로가기
Linux Unix

[ Unix ] Text 편집 명령 [awk] (유닉스 텍스트 추출, 패턴 분석)

by 정윤재 2010. 10. 14.

유닉스 에서

20101011142856 20101011142856.380 20101011142906.408 0 10.027 0 20101011142856.407 20101011142906.408 10.000 0.000 0.000 0 0.000 0.000 0 0.000 0.000 0 10.92.30.91 9093 01038166802 504 10 text/vnd.wap.wml 109 378 HTTP 0109CSSP3501148075444221638166802;37;6;13;05;0450 wapz.moneta.co.kr/paxnet/ngb/s11/s11.jsp?pageNo=1&changeTab=1&SU=0003221728&SM=08001A0&IPAGE=1&SMN=1040330603 0-0 1 0 -1 -1
20101011142902 20101011142902.501 20101011142907.680 0 5.179 0 20101011142902.522 20101011142907.680 5.158 0.000 0.000 0 0.000 0.000 0 0.000 0.000 0 10.148.46.212 9093 01047780988 200 10 text/vnd.wap.wml 208 1733 HTTP 01056SSI7351124029722111647780988;124;4;49672;454;2236 192.168.10.10/query 0-0 1 0 -1 -1

이런 문자열에서 (이게 한줄이다.) 5번째 항목이 5 이상인 항목들을 뽑아내라는 요청사항이

들어왔다.

저런 줄들이 100메가가 넘는 파일이 수백개였다. 얼마나 용량이 큰지 gz 로 압축이 되어 있어서

어떻게 해야 할지 감이 오지 않았다.

txt 파일을 gz 로 압축 되어 있던 것이다.

aaa.txt.gz 이런식으로 압축을 시켜놓았다.

이런 파일에서 저런 문제를 어떻게 해결할까?

내가 해결한 방법은

zcat 을 써서 파일 내용을 보게 하고 awk 라는 명령으로 if 문을 써서 프린트 하는 것이었다.

zcat 201010111420.txt.gz | awk '{if($5 > 5) print $0}' >> test.txt

이렇게 하면 깔끔하게 zcat 과 awk 를 연결 해서 나오게 되지 않나 싶다.

(당연히 테스트도 해보았다^_^ => 전체 내용을 출력하고 싶으면 print 다음에 아무것도 쓰지 않으면된다.)

댓글