텍스트 처리 (grep·sed·awk)
3. 코드 예제
예제 1: 로그에서 에러 찾기 — 01_grep_sed.sh 발췌
grep -n ERROR app.log # 줄 번호와 함께
grep -c ERROR app.log # 2
grep -A2 'ERROR.*500' app.log # 스택 트레이스 2줄 포함
grep -E ' (5[0-9]{2}) ' app.log # 5xx 응답 줄
grep -oE '/api/[a-z]+' app.log | sort | uniq -c4:2026-09-10 09:00:07 ERROR [http-3] POST /api/orders 500 45ms
8:2026-09-10 09:01:10 ERROR [http-5] GET /api/pay 502 3001ms
2
3 /api/orders
1 /api/pay-A2 출력에는 java.lang.NullPointerException 과 at com.shop... 줄이 따라옵니다. 예외 클래스만 모으려면 grep -E '^java\.|^org\.' 로 줄 첫머리를 봅니다.
예제 2: 설정 파일 치환 — 01_grep_sed.sh 발췌
grep -vE '^\s*(#|$)' app.properties # 주석·빈 줄 제외
sed -i.bak 's/^server.port=.*/server.port=9090/' app.properties
sed -i 's/^logging.level.root=DEBUG/logging.level.root=INFO/' app.properties
sed -i '/password/s/=.*/=****/' app.properties
diff app.properties.bak app.properties1c1
< server.port=8080
---
> server.port=9090
5c5
< logging.level.root=DEBUG
---
> logging.level.root=INFOdiff 의 1c1 은 1번 줄이 바뀌었다는 뜻입니다. 배포 스크립트에서 이 diff 출력을 로그로 남기면 어떤 값이 언제 바뀌었는지 추적됩니다.
예제 3: awk 로 응답 시간 통계 — 01_grep_sed.sh 발췌
awk '/^2026/{print $3}' app.log | sort | uniq -c
grep -E '[0-9]+ms