100===Dev Ops/Linux

강력한 텍스트 검색 도구 grep 완벽 가이드 🔍

블로글러 2024. 11. 17. 08:52

개발자라면 반드시 알아야 할 grep! 오늘은 grep의 모든 것을 알아보겠습니다.

grep이란? 🤔

grep은 "Global Regular Expression Print"의 약자입니다.
파일이나 입력 스트림에서 특정 패턴을 검색하는 강력한 명령어 도구예요.

마치 도서관에서 책을 찾는 사서처럼, grep은 텍스트 파일에서 원하는 내용을 빠르게 찾아줍니다!

기본 문법 📝

grep [옵션] 패턴 파일명

주요 옵션들 🛠️

  1. -i (ignore-case)

    • 대소문자 구분 없이 검색
      grep -i "hello" file.txt
  2. -r (recursive)

    • 하위 디렉토리까지 재귀적으로 검색
      grep -r "TODO" /project
  3. -n (line-number)

    • 매칭된 라인 번호 표시
      grep -n "error" log.txt
  4. -v (invert-match)

    • 패턴과 일치하지 않는 라인 출력
      grep -v "debug" log.txt
  5. -l (files-with-matches)

    • 매칭된 파일 이름만 출력
      grep -l "TODO" *.java

실전 활용 예시 💪

1. 로그 파일 분석

# 에러 로그만 추출
grep "ERROR" application.log

# 특정 시간대의 로그 검색
grep "2024-03-" application.log

2. 소스 코드 검색

# TODO 주석 찾기
grep -r "TODO" src/

# 특정 함수 사용 검색
grep -r "getUserById" .

3. 복잡한 패턴 매칭

# 이메일 주소 찾기
grep -E "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}" file.txt

# IP 주소 찾기
grep -E "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log

고급 테크닉 🚀

1. 컨텍스트 표시

# 매칭된 라인 전후 3줄 표시
grep -A 3 -B 3 "exception" error.log

2. OR 검색

# error 또는 warning 검색
grep -E "error|warning" log.txt

3. 단어 단위 매칭

# "test"라는 단어만 검색 (testing, tested 등은 제외)
grep -w "test" file.txt

성능 최적화 팁 💡

  1. 적절한 옵션 사용

    • 큰 파일에서는 -l 옵션으로 빠른 검색
    • 바이너리 파일 제외시 --binary-files=without-match
  2. 정규표현식 최적화

    • 복잡한 정규식은 성능 저하 유발
    • 가능하면 단순한 패턴 사용
  3. 파이프라인 활용

    # 결과 정렬 후 중복 제거
    grep "error" *.log | sort | uniq

자주 하는 실수들 ⚠️

  1. 너무 광범위한 패턴

    • 검색 범위를 구체적으로 지정하기
  2. 정규식 특수문자 처리 실수

    • 메타문자는 이스케이프 처리 필요
      grep "\." file.txt  # 점(.) 문자 검색
  3. 대소문자 구분 실수

    • 필요한 경우 -i 옵션 사용

References 📚

  1. GNU Grep Manual: https://www.gnu.org/software/grep/manual/
  2. Linux Documentation Project: https://tldp.org/
  3. Unix & Linux Stack Exchange: https://unix.stackexchange.com/
  4. The Linux Command Line (William Shotts)
728x90