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
반응형