본문 바로가기
목차
shell

grep (Global Regular Expression Print)

by ds31x 2025. 12. 31.
728x90
반응형

1. grep이란?

grep
텍스트 파일이나 표준 입력(stdin)에서
특정 패턴을 검색하여 해당 줄을 출력하는 도구
임.

  • 정규식(regular expression)을 기반으로 동작하며,
  • 로그 분석
  • 소스 코드 탐색
  • 설정 파일 검사 등에 널리 사용됨.

2. 기본 사용 형식

grep [OPTIONS] PATTERN FILE

 

다음은 간단한 예임:

grep error app.log
  • app.log 파일에서 error가 포함된 모든 줄 출력
  • 로그 파일에서 오류 메시지를 빠르게 찾을 수 있음

3. 주요 옵션별 설명과 활용

-i — Ignore Case (대소문자 무시)

grep -i error app.log
  • error, Error, ERROR 모두 매칭.
  • 대소문자가 섞여 있는 로그나 사용자 입력 텍스트를 안정적으로 검색


-n — Line Number (줄 번호 출력)

grep -n error app.log
  • 매칭된 줄의 줄 번호를 함께 출력
  • 소스 코드나 로그에서 문제가 발생한 정확한 위치를 추적

-v — Invert Match (패턴 제외)

grep -v debug app.log
  • debug가 포함된 줄을 제외하고 출력
  • 불필요한 디버그 로그를 제거하고 중요한 정보만 확인

-r / -R — Recursive (재귀 검색)

grep -r error ./src
  • src 디렉토리 하위의 모든 파일을 재귀적으로 검색
  • 프로젝트 전체 소스 코드에서 특정 키워드나 API 사용 여부 탐색

참고로 -R은 심볼릭 링크도 따라감


-l — List Files (파일 이름만 출력)

grep -l error *.log
  • 패턴이 포함된 파일 이름만 출력
  • 어떤 파일에 문제가 있는지 빠르게 범위 축소

-c — Count (매칭된 줄 개수)

grep -c error app.log
  • 매칭된 줄의 개수만 출력
  • 오류 발생 빈도 집계, 로그 통계 처리 등에 사용.

-w — Word Match (단어 단위 매칭)

grep -w cat text.txt
  • cat만 매칭
  • catch, category는 제외
  • 변수명, 명령어처럼 정확한 토큰 단위 검색에 사용됨.

-E — Extended Regular Expression (확장 정규식)

grep -E 'error|warning' app.log
  • error 또는 warning 중 하나라도 포함된 줄
  • 여러 조건을 OR로 묶어 복합 검색을 수행.
  • egrep과 동일한 기능을 제공

-F — Fixed String (고정 문자열 검색)

grep -F 'a.b' file.txt
  • .을 정규식이 아닌 문자 그대로 처리
  • 정규식 메타 문자가 포함된 문자열을 그대로 검색

^ — Beginning of Line (줄 시작)

grep '^ERROR' app.log
  • ERROR로 시작하는 줄만 매칭
  • 로그 레벨이 줄 앞에 오는 형식에서 특정 레벨만 필터링

$ — End of Line (줄 끝)

grep 'failed$' app.log
  • failed로 끝나는 줄만 매칭
  • 결과 상태가 줄 끝에 기록되는 로그 형식 분석에 주로 사용됨.

4. 파이프와 함께 사용하는 grep

예제 1: 실행 중인 프로세스 검색

ps aux | grep python
  • 현재 실행 중인 특정 프로그램이나 서비스 확인

예제 2: 조건을 단계적으로 필터링

dmesg | grep -i error | grep -v usb
  • 방대한 시스템 로그에서 관심 있는 오류만 선별

5. 파일이 아닌 표준 입력 처리

echo "hello world" | grep world
  • echo의 stdout으로 출력된 내용이
  • grep의 stdin으로 입력됨.
cat app.log | grep error
  • cat으로 app.log 파일의 내용을 출력하고
  • 모든 텍스트 스트림을 필터링 가능

6. 자주 쓰는 옵션 조합 (실무 패턴)

grep -rin error .
  • -r : 재귀 검색
  • -i : 대소문자 무시
  • -n : 줄 번호 출력

현재 디렉토리 전체에서 오류 키워드를 위치 정보와 함께 탐색


7. grep / egrep / fgrep 정리

명령 의미
grep 기본 정규식
grep -E 확장 정규식
grep -F 고정 문자열 검색

 

728x90