Linux
리눅스 awk 명령어 완벽 가이드: 실전 예제와 출력
Tech Energy
2024. 11. 20. 21:55
728x90
반응형
awk는 리눅스에서 강력한 텍스트 처리 도구로, 데이터 분석, 로그 처리, 파일 필터링 등 다양한 작업에 유용합니다. 이번 포스팅에서는 초보자부터 고급 사용자까지 활용할 수 있는 실전 예제와 출력 중심으로 awk를 자세히 살펴보겠습니다.
1. awk란 무엇인가요?
awk는 행(row) 기반으로 텍스트 파일이나 입력 스트림을 처리하고, 데이터를 조작하거나 출력하는 데 사용됩니다. 기본 구문은 다음과 같습니다:
awk '패턴 {액션}' 파일명
- 패턴: 특정 조건을 정의
- 액션: 조건을 만족하는 행에 대해 수행할 작업
2. 기본 사용법
(1) 특정 열 출력
awk를 사용해 파일의 특정 열(column)을 출력할 수 있습니다.
data.txt
Name Age Score
Alice 25 90
Bob 30 85
Charlie 28 88
awk '{print $1}' data.txt
Name
Alice
Bob
Charlie
(2) 특정 열 조합 출력
awk '{print $1, $3}' data.txt
출력
Name Score
Alice 90
Bob 85
Charlie 88
3. 조건부 출력
(1) 특정 조건에 맞는 행만 출력
30세 이상인 사람의 정보를 출력합니다.
awk '$2 >= 30 {print $0}' data.txt
출력
Bob 30 85
(2) 특정 문자열 포함 행 출력
awk '/Alice/ {print $0}' data.txt
출력
Alice 25 90
4. 계산 기능
(1) 열 데이터의 합 계산
Score 열의 총합을 계산합니다.
awk '{sum += $3} END {print "Total Score:", sum}' data.txt
출력
Total Score: 263
(2) 평균 계산
awk '{sum += $3; count++} END {print "Average Score:", sum / count}' data.txt
출력
Average Score: 87.6667
5. 출력 포맷 지정
(1) 열에 헤더 추가
awk 'BEGIN {print "Name,Score"} {print $1 "," $3}' data.txt
출력
awk '{print $1, $3}' data.txt | sort -k2 -n
(2) 출력 정렬
점수를 기준으로 정렬합니다.
awk '{print $1, $3}' data.txt | sort -k2 -n
출력
Bob 85
Charlie 88
Alice 90
6. 실전 예제
(1) 로그 파일 분석
access.log
192.168.1.1 - - [20/Nov/2024:10:10:10] "GET /index.html HTTP/1.1" 200
192.168.1.2 - - [20/Nov/2024:10:11:11] "POST /login HTTP/1.1" 404
192.168.1.3 - - [20/Nov/2024:10:12:12] "GET /about.html HTTP/1.1" 200
- 상태 코드 200만 출력:
awk '$NF == 200 {print $1, $4, $7}' access.log
192.168.1.1 [20/Nov/2024:10:10:10] /index.html 192.168.1.3 [20/Nov/2024:10:12:12] /about.html
(2) 디스크 사용량 분석
df -h | awk '{print $1, $5}'
출력
Filesystem Use%
/dev/sda1 30%
tmpfs 15%
/dev/sdb1 60%
7. awk 스크립트 파일 활용
awk 명령어를 자주 사용할 경우 스크립트 파일로 저장해 활용할 수 있습니다.
script.awk
$3 >= 90 {print $1, $3 " -> Excellent"}
$3 < 90 {print $1, $3 " -> Needs Improvement"}
실행
awk -f script.awk data.txt
출력
Alice 90 -> Excellent
Bob 85 -> Needs Improvement
Charlie 88 -> Needs Improvement
8. awk 고급 사용법
(1) 필드 구분자 변경
CSV 파일을 처리할 때 구분자를 쉼표로 지정합니다.
awk -F',' '{print $1, $3}' data.csv
(2) 문자열 조작
이름에 소문자를 포함한 데이터를 대문자로 변환합니다.
awk '{print toupper($1)}' data.txt
출력
NAME
ALICE
BOB
CHARLIE
마무리
awk는 텍스트 데이터 처리와 분석을 효율적으로 도와주는 강력한 도구입니다. 이번 포스팅에서는 다양한 예제와 출력을 통해 awk의 활용 가능성을 살펴봤습니다. 여러분의 리눅스 활용에 도움이 되길 바랍니다!
728x90
반응형