GNU Awk 사용자 가이드/머릿말
Arnold Robbins와 나는 오랜 친구다. 1990년에 나와 나의 친구, 그리고 우리가 가장 아끼는 프로그래밍 언어 AWK가 소개되기까지는 특별한 이야기가 있었다. 이야기는 그로부터 2년 전으로 거슬러 올라간다. 난 새로운 직장을 얻었고, 구석진 자리에서 코드가 뽑혀있는 Unix 컴퓨터가 있음을 알리고 있었다. 나뿐만 아니라 모두들 그 컴퓨터를 어떻게 사용해야 할지 몰랐다. 하지만, 2년이 지난 후, 그 Unix 컴퓨터는 사용되고 있었고, 난 그 컴퓨터의 유일무이한 사용자가 되어 있었다. 그 때부터, 나는 통계학자로부터 Unix 프로그래머로 바뀌었다.
내용을 보다 알차게 한다는 전제조건 밑에서 참여자께서는 이 문서를 재편집하실 수 있습니다. 누가 언제 마지막으로 글을 썼으며 그리고 쓰고 있는지는 문서역사를 살펴 보시기 바랍니다. | |
번역이 직설적입니다. 보다 아름다운 한국어... |
유닉스에 관한 책을 찾아 도서관과 서점을 찾는 중에, 나는 Aho, Kernighan and Weinberger의 이름을 딴 AWK에 관련된 책인 The AWK Programming Language (Addison-Wesley, 1988) 이라는 책을 발견했다. AWK의 간단한 프로그래밍 패러다임은 입력값에서 패턴을 찾아내서 어떤 동작을 하게하는, 종종 복잡하고 지루하다고 느껴지는 자료처리를 단 몇줄의 코드로 조작할 수 있게 해주었다. 나는 내손으로 AWK 프로그래밍을 한것이 너무나 기뻤다.
그런데 안타깝게도, 내 컴퓨터에 설치되어 있는 awk는 책 속에 소개되어 있는 프로그래밍 언어로써의 awk를 구현하기에는 제한적인 버전이었다. 나는 내 컴퓨터의 awk가 "오래된 awk"이고 책에서 소개하고 있는 AWK는 "새로운 AWK"임을 알게됐다. 난 이렇게 오래된 버전은 거부당해 외면당하거나 그 이름을 포기하는 것이 보편적인 일이라는 것을 배웠다. 만약 새로운 awk가 어떤 시스템에 설치된다면 항상 nawk로 불리우고 소수의 시스템에서 설치된다. 새로운 awk를 갖는 가장 좋은 방법은 prep.ai.mit.edu.gawk에서 ftp로 gwak를 얻는것이다. gwak은 David Trueman과 Arnold가 썼고 GNU General Public License 아래 사용할 수 있다.
(부가적으로 말하자면, 새로운 awk를 찾는 것은 더 이상 어려운 것이 아니다. 어떤 시스템이라도 다운로드 받을 수 있다; 나의 아내 역시 그녀의 VMS 박스에서 gawk를 사용한다.)
내가 사용한 Unix 시스템은 네트워크와 연결되어 있지 않았다. 그래서 나는 gawk과 Unix 커뮤티니의 존재에 대해서 몰랐고 나는 새로운 awk를 원하게되었다. 따라서 혼자서 mawk라고 부르는 새로운 awk를 썼다. mawk를 다 쓰기 전에 난 gawk라는 것에 대해 알게 되었다. 하지만 멈추기에는 너무나 늦읒 상태였다. 그래서 나는 결국 comp.sources 뉴스그룹에 글을 게재 하게 됐다.
내가 comp.sources 뉴스그룹에 글을 게재하기 시작한지 며칠 뒤, 난 Arnold로부터 자신을 소개하는 친절한 메일을 받았다. 그는 POSIX standard에 대한 초안 첨부와 함께 디자인과 알고리즘을 공유할것을 제안했다. 그래서 AWK책 출판물 뒤에 붙는 언어확장(language extensions) 을 지원하는 mawk로 판올림 할 수 있었다.
솔직히, Arnold와 나의 역할이 역전되어 있었다면, 나는 뉴스그룹에 게재된 글을 열어보지 않았을 것이고 우리는 아마도 절대 만나지 않았을 것이다. 나는 우리가 만났다는 것이 기쁘다. 그는 AWK의 완벽한 전문가였고 매우 좋은 사람이다. Arnold는 방대한 양의 전문지식과 시간을 자유소프트웨어 재단에 기여하였다.
이 책은 gawk의 참조 매뉴얼이지만 핵심은 많은 청중들에게 널리 알려질 AWK programming에 관한 내용이다. 이 책은 1987 Bell 연구소 AWK 언어 배포판과 1992년에 재정된 POSIX Utilities 표준처럼 AWK 언어에 대한 기준이다.
반면에, 잘 초보 AWK 프로그래머는 AWK의 데이터 주도 조정-흐름, 정규 표현과 맞는 패턴, 그리고 연합하는 배열 등과 같은 기본적인 관용구의 힘을 강조하는 실전적인 프로그램의 부유함을 공부할 수 있다. 이 새로운 것들을 가지고 gawk을 이용해서 특정한 /inet 파일들을 경유하는 프로토콜들의 네트워크를 시도할 수 있다.
이 책의 프로그램은 AWK 프로그램이 대개 C로 쓰여진 것보다 개발하는데 더 작고 빠르다는 것을 명백히 보여준다. 결과적으로 AWK로 알고리즘의 원형을 작성하거나 디자인하는것이 종종 더 빠르게 작동하고 문제점들이 일찍 드러나게된다. 종종 해석 성능이 적절하고 AWK는 제품이 된다.
새로운 pgawk은 프로그램 실행 카운트를 산출한다. 난 최근에 n개 라인의 input을 갖는 알고리즘을 실험했었고, 이론상으로는 ~C n lon n의 결과가 나왔어야 하지만 ~ C n^2 퍼포먼스가 나타났다. 몇 분 동안 프로파일 결과인 awkprof.out 을 관찰했고 문제의 윤곽을 한줄의 코드로 정확히 잡을 수 있었다. pgawk는 나의 프로그래머 도구상자에 훌륭하게 추가되었다.
Arnold는 10년의 AWK프로그램 작성, 개발 및 사용 경험을 이 책에 적었다. 만약 당신이 AWK를 사용하기를 원하고 배우기를 원한다면, 이 책을 읽어라.
2001년 3월 mawk의 작성자 Michael Brennan가