1. 도구별 역할 비교
| 도구 | 주요 기능 | 장점 | 대표적 활용 |
|---|---|---|---|
| grep | 텍스트 검색 | 검색 속도 빠름 | 로그 필터링, 내용 탐색 |
| sed | 텍스트 변환 | 실시간 편집 | 일괄 치환, 삭제 작업 |
| awk | 데이터 처리 | 프로그래밍 기능 | 통계 분석, 보고서 생성 |
2. 학습 단계별 로드맵
| 기초 단계 | 중급 단계 | 고급 단계 | 실전 적용 |
|---|---|---|---|
| • 명령어 기본 사용 • 단순 검색/치환 |
• 정규표현식 활용 • 스크립트 작성 |
• 파이프라인 구성 • 다중 도구 연계 |
• 로그 분석 시스템 • 데이터 정제 파이프라인 |
3. 단계별 학습 자료
기초 단계: 명령어 기본
# grep 기본 예시
grep "검색어" 문서.log
grep -r "환경설정" /etc/ # 하위 디렉토리 검색
# sed 기본 예시
sed 's/기존/신규/' 파일.txt # 첫 번째 일치 항목 치환
sed '3,6d' 데이터.txt # 3~6행 삭제
# awk 기본 예시
awk '{print $2}' 표.txt # 두 번째 열 출력
awk -F, '{print $1}' 데이터.csv # 콤마 구분 처리
중급 단계: 고급 기능 활용
# 정규표현식 활용
grep -E "장애|경고" 시스템로그.log
# sed 고급 편집
sed '/시작/,/종료/s/옛날/새것/g' 문서.txt
# awk 프로그래밍
awk '{합계 += $1} END{print "총합:", 합계}' 숫자.txt
awk '{for(항목=1; 항목<=NF; 항목++) print $항목}' 자료.txt
고급 단계: 도구 조합
# 파이프라인 구성 예시
grep "중요" 기록.log | awk '{print $3, $5}'
sed 's/;/,/g' 원본.csv | awk -F, 'NF > 4'
# 다단계 처리
로그분석:
grep -E "(오류|경고)" 앱로그 |
awk '{카운트[$2]++} END{for(유형 in 카운트) print 유형, 카운트[유형]}'
데이터정제:
cat 원본.txt |
sed '/^#/d' | # 주석행 제거
awk '$1 ~ /^[A-Z]/' # 첫 글자 대문자 필터
4. 실전 프로젝트 예제
로그 분석 시스템
#!/bin/bash
입력로그="${1:-/var/log/시스템로그}"
출력파일="분석결과_$(date +%Y%m%d).txt"
grep -E "(오류|경고)" "$입력로그" |
awk '{
카운트[$1]++
메시지[$1] = 메시지[$1] "\n" $0
}
END {
for(유형 in 카운트)
print 유형 " 발생:", 카운트[유형], "건\n대표메시지:", 메시지[유형]
}' > "$출력파일"
데이터 정제 프레임워크
#!/bin/bash
입력="$1"
출력="${입력%.*}_정제됨.${입력##*.}"
cat "$입력" |
sed -e '/^--/d' | # 주석 제거
tr '|;' ',' | # 구분자 통일
awk -F, 'NF >= 4 { # 유효 데이터 필터
$1 = toupper($1)
print $1 "," $3 "," $4
}' |
sort -k1,1 > "$출력"
5. 성능 최적화 기법
# grep 최적화
grep -m 500 "패턴" 대용량파일.txt # 최대 검색 결과 제한
# sed 효율화
sed '10000,20000s/구/신/' 대형파일.txt # 특정 구간만 처리
# awk 처리 개선
awk 'NR % 1000 == 0 {print}' 거대파일.log # 샘플링 추출
# 파이프라인 효율
awk '/필터/ {print $2, $4}' 입력.txt # 단일 명령으로 대체
6. 실습 과제
- 웹 서버 접속 로그 분석 및 시각화
- 비정형 CSV 데이터 표준화 처리
- 시스템 자원 사용량 모니터링 스크립트