← 개발일지

리눅스 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는 완전히 다른 레이어
  • 운영에서는 "문자열 검색"이 아니라 "흐름 추적"이 목적