> 텍스트 처리 및 검색 > awk

awk 빠른 가이드

텍스트 스트림을 레코드와 필드 단위로 처리하여 필터링, 변환, 집계를 수행하는 스트림 처리 도구입니다. GNU awk(gawk) 기준의 일반적 옵션과 대표 패턴을 정리했습니다.

개요

awk는 입력을 레코드(기본: 줄)로 읽고, 필드 구분자(FS)로 나눈 뒤 패턴/액션 { ... }을 적용하여 원하는 출력(OFS)로 내보냅니다. 흔한 활용은 컬럼 추출, 조건 필터, 합계/평균 계산, 포맷 변환 등입니다.

주요 내장 변수

입출력 동작과 서식을 제어하는 대표 내장 변수들입니다.

  • NR: 지금까지 읽은 레코드(줄) 번호
  • FNR: 현재 파일에서의 레코드 번호
  • NF: 현재 레코드의 필드 개수
  • FS: 입력 필드 구분자 (기본 공백)
  • OFS: 출력 필드 구분자 (기본 공백)
  • RS: 레코드 구분자 (기본 개행)
  • ORS: 출력 레코드 구분자 (기본 개행)

기본 형태

awk '패턴 { 액션 }' input.txt
awk -f program.awk input.txt

패턴/액션 블록을 한 줄로 전달하거나, -f로 스크립트 파일을 전달합니다.

주요 옵션

실무에서 자주 쓰는 옵션을 상황별로 묶었습니다. gawk 호환 옵션 포함.

1) 기본 실행/입력

2) 필드/변수 전달

3) 디버깅/호환(gawk)

4) 도움말/버전

생성된 명령어:

명령어를 조합해 보세요.

설명:

`awk` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

자주 쓰는 패턴

컬럼 추출

awk -F ':' '{ print $1, $3 }' /etc/passwd

콜론으로 구분된 1, 3번째 필드만 출력

조건 필터

awk '$5 > 100 { print }' data.tsv

5번째 필드 값이 100보다 큰 레코드만 출력

집계 예시

awk '{ sum += $2 } END { print sum }' data.txt

두 번째 컬럼 합계

변수 전달과 포맷

awk -v OFS=',' '$1=="KEY" { print $1, $2, $3 }' input.txt

OFS를 콤마로 지정하고 특정 키만 출력

실무 팁

한 줄 한 줄 스트림 처리이므로 파이프와 조합이 강력합니다.

  • 필드 구분자에 정규식 사용 가능: -F '[,:\t]+'
  • 여러 -e로 프로그램을 파트별 작성 가능
  • 긴 스크립트는 -f로 분리하고 git으로 버전 관리
  • 출력 포맷은 OFS/ORS를 적절히 조정
  • 대용량 입력은 필요 최소 작업만 남기고 파이프라인 단순화

관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.



동일 카테고리 명령어