반응형
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}' 파일
반응형
'리눅스 생활 하고파' 카테고리의 다른 글
| [리눅스 명령어] sed 기초부터 옵션까지 한 번에 정리 (0) | 2026.01.21 |
|---|---|
| [리눅스 명령어] rm 기초부터 옵션까지 한 번에 정리 (0) | 2026.01.17 |
| [리눅스 명령어] cp 기초부터 옵션까지 한 번에 정리 (0) | 2026.01.16 |
| [리눅스 명령어] mv 기초부터 옵션까지 한 번에 정리 (0) | 2026.01.15 |
| [리눅스 기초 개념] 상대경로와 절대경로 완전 정리 (명령어 사용 전 필수) (0) | 2026.01.14 |