리눅스 텍스트 처리 핵심 도구 활용법

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 데이터 표준화 처리
  • 시스템 자원 사용량 모니터링 스크립트

태그: grep sed awk 리눅스명령어 텍스트처리

7월 12일 20:20에 게시됨