awk 기본
Bash
# 구분자로 필드 출력 ($1=첫번째 필드)
awk '{print $1, $3}' access.log
# 구분자 지정 (콜론)
awk -F':' '{print $1}' /etc/passwd
# 조건 필터 (5번째 필드가 200인 행)
awk '$5 == 200 {print $0}' access.log
# 합계 계산
awk '{sum += $NF} END {print "Total:", sum}' numbers.txtawk 실전 로그 분석
Bash
# Nginx access.log에서 상태코드별 집계
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# IP별 요청 수 Top 10
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 응답 크기 합계 (바이트)
awk '{sum += $10} END {printf "Total: %.2f MB\n", sum/1024/1024}' access.log
# 4xx, 5xx 에러만 출력
awk '$9 ~ /^[45]/' /var/log/nginx/access.logsed 기본
Bash
# 문자열 치환 (첫 번째 일치)
sed 's/old/new/' file.txt
# 전체 치환 (g 플래그)
sed 's/old/new/g' file.txt
# 대소문자 무시 치환
sed 's/old/new/gi' file.txt
# 파일 직접 수정 (-i)
sed -i 's/localhost/127.0.0.1/g' config.conf
# 특정 줄 삭제 (3번째 줄)
sed '3d' file.txt
# 빈 줄 제거
sed '/^$/d' file.txt
# 주석 줄 제거
sed '/^#/d' config.confsed 실전 설정 파일 패치
Bash
# 포트 번호 변경
sed -i 's/^Port 22/Port 2222/' /etc/ssh/sshd_config
# 특정 줄 다음에 새 줄 삽입
sed -i '/^SELINUX=enforcing/a SELINUXTYPE=targeted' /etc/selinux/config
# 여러 파일 일괄 치환
find . -name "*.conf" -exec sed -i 's/old_domain/new_domain/g' {} \;
# 구분자를 / 대신 | 사용 (경로 포함 시 편리)
sed 's|/old/path|/new/path|g' deploy.sh조합 패턴
Bash
# 특정 범위 줄만 처리 (10~20번째 줄)
sed -n '10,20p' large_file.log
# 패턴 사이 줄 출력
sed -n '/START/,/END/p' file.txt
# awk로 파싱 후 sed로 포맷 정리
awk -F',' '{print $1,$3}' data.csv | sed 's/ /\t/g'편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서GNU/Linux man 페이지 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.