리눅스 grep으로 로그에서 문자열 찾는 방법
문제 상황
운영 중 로그 파일이 여러 개 쌓여 있는 상태에서
특정 ID(AUM0000058654)가 포함된 로그를 빠르게 찾고 싶다.
파일 형태는 다음과 같다:
pc_2026-01-16.1.log
pc_2026-01-16.error.log
pc_2026-01-16.backup.log
해결 방법: grep 기본 사용
가장 단순한 방법은 다음 한 줄이다.
grep "AUM0000058654" pc_2026-01-16.*.log
왜 이게 동작하는가?
pc_2026-01-16.*.log
→ 쉘(Bash)이 먼저 파일 목록으로 확장한다 (globbing)grep
→ 각 파일을 읽으면서 문자열 포함 여부를 line 단위로 검사
즉 흐름은 다음과 같다:
파일 목록 확장 → grep 실행 → line별 문자열 매칭 → 결과 출력
실전에서 반드시 쓰는 옵션
1. 라인 번호 확인
grep -n "AUM0000058654" pc_2026-01-16.*.log
- 정확히 어느 위치인지 바로 확인 가능
2. 앞뒤 로그까지 같이 보기
grep -n -C 3 "AUM0000058654" pc_2026-01-16.*.log
- 에러의 원인 파악에 필수
-C 3→ 앞뒤 3줄 포함
3. 결과가 많을 때 안전하게 보기
grep -n "AUM0000058654" pc_2026-01-16.*.log | less
- 메모리 부담 없이 탐색 가능
/문자열로 재검색
4. 해당 문자열이 있는 파일만 확인
grep -l "AUM0000058654" pc_2026-01-16.*.log
- 어떤 로그 파일에 존재하는지 빠르게 파악
자주 헷갈리는 포인트
globbing vs regex
많이 헷갈리는 부분이다.
|구분|설명|
|---|---|
|*|파일 선택 (shell globbing)|
|regex|grep 내부 문자열 매칭|
즉 아래에서:
pc_2026-01-16.*.log
이 *는 grep이 아니라 bash가 해석한다.
로그 분석 관점에서의 활용
AUM0000058654 같은 값은 보통:
- request ID
- transaction ID
이걸 기준으로:
- 요청 시작/종료 추적
- 오류 발생 위치 파악
- 시스템 병목 분석
이 가능하다.
정리
가장 실용적인 형태는 다음 조합이다:
grep -n -C 2 "AUM0000058654" pc_2026-01-16.*.log | less
- 위치 확인 (-n)
- 흐름 파악 (-C)
- 안정적인 탐색 (less)
핵심 takeaway
- grep은 단순 검색 도구가 아니라 로그 trace 도구
- globbing과 regex는 완전히 다른 레이어
- 운영에서는 "문자열 검색"이 아니라 "흐름 추적"이 목적