코드의 거장들이 만든, 텍스트 처리의 숨은 고수 AWK
1977년부터 지금까지 변하지 않는 데이터 분석 도구
쉽다, 생산적이다, 언제나 사용할 수 있다!
AWK 창시자가 직접 쓴 가이드
대규모 로그 파일 분석이나 CSV 데이터를 처리할 때마다 무거운 프로그램과 복잡한 스크립트에 의존하는가? 텍스트 데이터를 효율적으로 처리하고 싶지만, 배우기 어려운 도구들로 생산성을 떨어뜨리고 있는가? 이러한 문제로 인해 중요한 업무에 집중하지 못하고 시간을 낭비하고 있을지도 모른다. 1970년대 여러분과 비슷한 고민을 하던 세 명의 천재 개발자가 한자리에 모였다. 이들은 유닉스 시스템의 잠재력을 최대한 발휘할 방법을 고민하다가 당시로선 혁신적인 아이디어를 떠올렸다. 그건 바로 텍스트 데이터를 효율적으로 처리하는 새로운 도구를 만드는 것이었다. 그리하여 탄생한 것이 바로 AWK였다.
AWK는 텍스트 기반 데이터 처리를 혁신적으로 간소화한다. AWK를 사용하면 복잡한 스크립트를 작성하지 않고도 데이터 전처리와 로그 분석 같은 일상적인 작업을 빠르게 처리할 수 있다. 특히, 유닉스 파이프라인과의 탁월한 호환성 덕분에 여러 작업을 한 번에 효율적으로 수행하여 생산성을 극대화할 수 있다. 지금 바로 AWK에 10분만 투자해 보자. 초보자도 10분이면 텍스트 데이터 처리의 새로운 가능성을 맛볼 수 있다.
Contents
1장 Awk 튜토리얼
1.1 시작하기
Awk 프로그램의 구조
Awk 프로그램의 실행 방법
에러
1.2 단순 출력
전체 라인 출력
특정 필드 출력
NF, 필드 수
계산 및 출력
라인 번호 출력
텍스트를 넣어 출력
1.3 출력 포매팅
필드 라인업
결과 정렬
1.4 선택
비교 결과로 선택
계산 결과로 선택
텍스트 내용으로 선택
패턴 조합
데이터 유효성 검사
BEGIN과 END
1.5 계산
개수 세기
합계와 평균 계산
텍스트 처리
문자열 연결
마지막 입력 라인 출력
내장 함수
라인, 단어, 문자 개수 세기
1.6 제어문
if-else 문
while 문
for 문
피즈버즈
1.7 배열
1.8 한 라인짜리 쓸 만한 프로그램
1.9 이제 무엇을 할까?
2장 Awk 실제 사용법
2.1 개인용 계산기
체질량 지수
단위 환산
셸 스크립트 복습
2.2 선택
2.3 변환
캐리지 리턴
멀티 컬럼
2.4 요약
2.5 개인용 데이터베이스
주가
2.6 개인용 라이브러리
날짜 포매터
2.7 정리하기
3장 탐색적 데이터 분석
3.1 타이타닉호 침몰
요약 데이터: titanic.tsv
탑승객 데이터: passengers.csv
추가 확인
3.2 맥주 평점
3.3 데이터 그루핑
3.4 유니코드 데이터
3.5 기본 그래프 및 차트
3.6 정리하기
4장 데이터 처리
4.1 데이터 변환과 축소
컬럼 합계
백분율 및 분위수 계산
쉼표가 있는 숫자
고정 필드 입력
프로그램 상호 참조 검사
4.2 데이터 유효성 검사
균형 잡힌 구분자
패스워드 파일 검사
데이터 유효성 검사 프로그램 생성
4.3 결합과 분리
4.4 멀티라인 레코드
빈 라인으로 구분된 레코드
멀티라인 레코드 처리
헤더/트레일러 추가
이름-값 데이터
4.5 정리하기
5장 리포트와 데이터베이스
5.1 리포트 생성하기
단순 리포트
5.2 패키징된 쿼리와 리포트
폼 레터
5.3 관계형 데이터베이스 시스템
자연 조인
relfile
q, Awk와 유사한 쿼리 언어
qawk, q를 Awk로 옮기는 번역기
5.4 정리하기
6장 단어 처리
6.1 무작위 텍스트 생성
무작위 선택
클리셰 생성기
무작위 문장
6.2 대화형 텍스트 조작
스킬 테스트: 산수 시험
스킬 테스트: 퀴즈
6.3 텍스트 처리
단어 개수 세기
텍스트 포매팅
문서 파일의 상호 참조 관리
KWIC 인덱스
6.4 인덱스 만들기
6.5 정리하기
7장 작은 언어
7.1 어셈블러와 인터프리터
7.2 그래프 드로잉 언어
7.3 정렬 생성기
7.4 역폴란드 계산기
7.5 또 다른 접근 방식
7.6 산술 표현식용 재귀 하향 파서
7.7 Awk 부분집합을 위한 재귀 하향 파서
7.8 정리하기
8장 알고리즘 실험
8.1 정렬
삽입 정렬
퀵 정렬
힙 정렬
8.2 프로파일링
8.3 위상 정렬
너비 우선 위상 정렬
깊이 우선 탐색
깊이 우선 위상 정렬
8.4 Make: 파일 업데이트 프로그램
8.5 정리하기
9장 에필로그
9.1 언어로서의 Awk
9.2 성능
9.3 결론
부록 A Awk 사용자 매뉴얼
A.1 패턴
A.1.1 BEGIN과 END
A.1.2 표현식 패턴
A.1.3 정규 표현식 패턴
A.1.4 정규 표현식 상세
A.1.5 범위 패턴
A.2 액션
A.2.1 표현식
A.2.2 타입 변환
A.2.3 제어문
A.2.4 빈 문장
A.2.5 배열
A.3 사용자 정의 함수
A.4 출력
A.4.1 print 문
A.4.2 출력 구분자
A.4.3 printf 문
A.4.4 출력을 파일로
A.4.5 출력을 파이프로
A.4.6 파일과 파이프 닫기
A.5 입력
A.5.1 입력 구분자
A.5.2 CSV 입력
A.5.3 멀티라인 레코드
A.5.4 getline 함수
A.5.5 명령줄 인수와 변수 할당
A.6 다른 프로그램과의 연동
A.6.1 system 함수
A.6.2 Awk 프로그램으로 셸 명령어 제작
A.7 정리하기
Author
앨프리드 에이호,브라이언 커니핸,피터 와인버거,인사이트 편집부
컬럼비아 대학교 컴퓨터 과학과의 로런스 거스만 명예교수다. 그는 알고리즘, 자료 구조, 프로그래밍 언어, 컴파일러, 그리고 컴퓨터 과학 기초에 대한 연구로 널리 알려져 있으며, ACM A. M. 튜링상과 IEEE 존 폰 노이만 메달을 수상했다.
컬럼비아 대학교 컴퓨터 과학과의 로런스 거스만 명예교수다. 그는 알고리즘, 자료 구조, 프로그래밍 언어, 컴파일러, 그리고 컴퓨터 과학 기초에 대한 연구로 널리 알려져 있으며, ACM A. M. 튜링상과 IEEE 존 폰 노이만 메달을 수상했다.