AWK란 무엇인가
AWK는 1977년 벨 연구소에서 알프레드 아호, 피터 와인버거, 브라이언 커니핸이 개발한 텍스트 처리 언어입니다. 40년간 유닉스 도구를 사용해온 저로서는 AWK가 가장 과소평가된 프로그래밍 언어라고 생각합니다. 이름은 세 창시자의 이니셜입니다. 로그 분석, 데이터 변환, 보고서 생성에서 한 줄 명령으로 복잡한 작업을 수행합니다. sed, grep과 함께 유닉스 텍스트 처리의 삼두마차입니다.
AWK의 핵심 패턴
AWK 프로그램은 'pattern { action }' 형태입니다. 입력을 줄 단위로 읽어 패턴에 맞으면 액션을 실행합니다. $0은 전체 줄, $1, $2, ...는 각 필드입니다. BEGIN 블록은 처리 시작 전, END 블록은 처리 후 실행됩니다. 예: awk '{sum += $1} END {print sum}' file은 첫 번째 열의 합계를 출력합니다. 이처럼 간결하게 데이터 집계가 가능합니다.
AWK의 강력한 기능
AWK는 완전한 프로그래밍 언어입니다. 변수, 배열, 조건문, 반복문, 함수를 지원합니다. 연관 배열(해시)은 매우 유용하여 빈도 계산, 그룹화에 적합합니다. 정규 표현식으로 복잡한 패턴을 매칭합니다. 여러 파일을 동시에 처리하고, 필드 구분자를 자유롭게 지정할 수 있습니다. printf로 정교한 출력 형식을 지정합니다.
실전 AWK 예제
웹 서버 로그에서 IP별 요청 수를 세려면: awk '{count[$1]++} END {for (ip in count) print ip, count[ip]}' access.log. CSV 파일의 특정 열 합계: awk -F',' '{sum += $3} END {print sum}' data.csv. 특정 조건의 줄만 출력: awk '$3 > 100' data.txt. 이처럼 한 줄로 강력한 데이터 처리가 가능합니다.
AWK 학습과 현대적 대안
AWK는 모든 유닉스/리눅스 시스템에 설치되어 있어 바로 사용할 수 있습니다. GAWK(GNU AWK)는 확장 기능을 제공합니다. 'The AWK Programming Language'는 창시자들이 쓴 고전입니다. 'Effective awk Programming'(GAWK 매뉴얼)은 온라인에서 무료로 읽을 수 있습니다. 요즘은 Python pandas로 대체되기도 하지만, 간단한 텍스트 처리에는 AWK가 더 빠르고 편리합니다.
댓글
0