본문 바로가기
리눅스 생활 하고파

[리눅스 명령어] awk 기초부터 옵션까지 한 번에 정리

by 하고집 2026. 1. 20.
반응형

1. awk 란?

awk는 텍스트를 행(row)과 열(column) 단위로 처리하는 명령어다.
grep이 “찾기”에 특화되어 있다면, awk는 필터링 + 추출 + 가공까지 한 번에 할 수 있다.

로그 분석, CSV 처리, 명령어 출력 정리 등에서
grep 다음 단계로 반드시 배우게 되는 명령어다.


2. 기본 사용 방법

 
awk '조건 {동작}' 파일

또는 파이프와 함께 사용한다.

 
명령어 | awk '조건 {동작}'

2.1 가장 기본 예제

 
awk '{print $0}' app.log
  • $0 : 한 줄 전체 출력
  • 사실상 아무 것도 안 한 것과 같지만 구조 이해에 중요

3. awk의 핵심 개념 (반드시 이해)

3.1 필드(Field)란?

awk는 한 줄을 **공백 기준으로 잘라서 열(column)**로 인식한다.

 
127.0.0.1 - - [12/Jan] "GET /index.html" 200 1024
필드의미
$1 127.0.0.1
$2 -
$3 -
$6 "GET

3.2 자주 쓰는 내장 변수

변수의미
$0 전체 줄
$1 ~ $N N번째 필드
NF 필드 개수
NR 전체 줄 번호

4. 자주 사용하는 awk 패턴

4.1 특정 열 출력 (가장 많이 사용)

 
awk '{print $1}' app.log

첫 번째 컬럼만 출력


4.2 여러 컬럼 출력

 
awk '{print $1, $3, $5}' app.log

4.3 조건에 맞는 행만 출력

 
awk '$3 == "ERROR" {print $0}' app.log

세 번째 필드가 ERROR인 줄만 출력


4.4 숫자 조건 처리

 
awk '$5 > 500 {print $0}' app.log

5. 자주 사용하는 옵션(실무 핵심)

5.1 -F : 구분자 지정 (매우 중요)

 
awk -F ":" '{print $1}' /etc/passwd
  • 기본 구분자는 공백
  • : , , , | 등으로 변경 가능
  • CSV, 설정 파일 처리에 필수

5.2 BEGIN / END

 
awk 'BEGIN {print "START"} {print $1} END {print "END"}' app.log
  • BEGIN : 파일 처리 전 실행
  • END : 파일 처리 후 실행

6. 옵션 조합 예제 (이건 꼭!)

6.1 grep + awk (실무 최다)

 
grep "ERROR" app.log | awk '{print $1, $5}'
  • 에러 로그 중 특정 컬럼만 추출

6.2 파일 줄 개수 세기

 
awk 'END {print NR}' app.log

6.3 평균값 계산

 
awk '{sum += $5} END {print sum/NR}' app.log

7. 초보자가 자주 하는 실수

7.1 필드 번호 착각

 
awk '{print $0}' # 전체 줄 awk '{print $1}' # 첫 번째 필드

👉 $0과 $1 혼동 매우 많음


7.2 구분자 지정 안 함

 
awk '{print $1}' data.csv ❌

CSV인데 공백 기준으로 나뉘지 않음

👉 해결:

 
awk -F "," '{print $1}' data.csv

7.3 큰 파일에서 무조건 awk 실행

  • 파일 크기, 필드 구조 먼저 확인 필요
  • head, less로 구조 파악 후 사용 권장

8. 실무에서 awk를 쓰는 타이밍

  • 로그에서 특정 컬럼만 뽑고 싶을 때
  • CSV / 설정 파일 처리
  • 명령어 출력 결과 정리
  • 통계(합계, 평균) 계산

9. 정리 한 줄 요약

  • awk는 텍스트를 표처럼 다루는 도구다.
  • 이것만 기억하자:
  •  
    awk '{print $1}' 파일
반응형