🧠 grep이란?
grep은 **"global search for regular expression and print out the line"**의 줄임말로, 말 그대로 정규표현식을 사용해 특정 문자열을 검색하고 해당 문자열이 포함된 줄을 출력하는 명령어입니다.
즉, 파일 또는 표준 입력(STDIN)에서 특정 패턴이 포함된 줄을 찾아주는 명령어로, 로그 파일 분석, 설정 파일 디버깅, 대량 텍스트 필터링 등에 널리 사용됩니다.
🛠️ 기본 사용법
grep [옵션] [패턴] [파일명]
예를 들어, test.txt 파일 안에서 error라는 문자열이 포함된 줄을 찾고 싶다면 아래와 같이 입력합니다.
$ grep 'error' test.txt
✔︎ 핵심 예시
명령어 설명
grep 'error' test.log | test.log 파일에서 "error"가 포함된 라인 출력 |
grep -i 'error' test.log | 대소문자 구분 없이 "error", "Error", "ERROR" 모두 찾음 |
grep -n 'error' test.log | 해당 라인의 번호까지 함께 출력 |
grep -m 50 'error' test.log | 최대 50줄까지만 출력 (결과 제한) |
grep -v 'error' test.log | "error"가 포함되지 않은 라인만 출력 |
grep -w 'error' test.log | 정확히 "error"라는 단어와 일치하는 경우만 출력 |
grep -H 'error' * | 현재 디렉토리의 모든 파일에서 검색, 파일명까지 출력 |
grep -r 'error' . | 현재 디렉토리부터 하위 폴더까지 전체 검색 |
🔍 grep의 주요 옵션 정리
grep은 다양한 옵션을 통해 검색의 범위와 조건을 세부적으로 제어할 수 있습니다. 다음은 자주 사용하는 대표 옵션들입니다:
옵션 설명
-c | 일치하는 행의 개수만 출력 |
-i | 대소문자 구분 없이 검색 |
-v | 일치하지 않는 행만 출력 |
-n | 라인 번호 함께 출력 |
-l | 패턴이 포함된 파일 이름만 출력 |
-w | 정확히 해당 단어만 검색 |
-x | 전체 줄이 패턴과 정확히 일치하는 경우만 출력 |
-r 또는 -R | 재귀적으로 하위 폴더 포함 전체 파일 검색 |
-m [숫자] | 최대 출력 결과 수 제한 |
-E | 정규표현식 사용 (egrep과 동일) |
-F | 문자열 그대로 검색 (fgrep과 동일) |
--color=auto | 검색 결과에서 일치하는 문자열에 색상 강조 |
🧪 grep의 종류
기본적으로는 grep 하나만 알아도 대부분의 상황에 대응할 수 있습니다.
하지만 상황에 따라 아래와 같은 버전도 사용할 수 있습니다.
명령어 특징
grep | 가장 기본적인 형태. 정규표현식 사용 가능 |
egrep | grep -E와 동일. 고급 정규표현식(확장형) 사용 |
fgrep | grep -F와 동일. 정규표현식 없이 문자열 그대로 검색 |
💡 요즘은 대부분 grep 하나로도 -E, -F 옵션을 통해 같은 기능을 수행할 수 있기 때문에, grep + 옵션 조합만 알아도 충분합니다.
🔎 문자열 검색 예제
1️⃣ 대소문자 구분 없이 검색
grep -i "error" test.log
Error, ERROR, error 등 어떤 케이스로 되어 있어도 모두 검색됩니다.
2️⃣ 라인 번호 함께 출력
grep -n "timeout" app.log
해당 문자열이 포함된 줄 번호가 함께 표시되어 디버깅에 매우 유용합니다.
3️⃣ 일치하지 않는 행만 출력
grep -v "success" result.log
실패한 케이스만 보고 싶을 때 유용한 옵션입니다.
4️⃣ 특정 단어만 검색
grep -w "fail" result.log
failure는 무시되고 정확히 fail만 포함된 줄만 출력됩니다.
5️⃣ 하위 디렉토리 포함 전체 검색
grep -r "connection lost" /var/log
수많은 로그 디렉토리에서 한 번에 검색할 수 있어 실무에서 매우 자주 활용됩니다.
🧮 정규표현식을 활용한 고급 검색
grep은 단순 문자열 검색뿐 아니라 정규표현식을 통한 패턴 검색도 가능합니다.
예제 1) a로 시작하는 모든 단어 찾기
grep 'a*' test.log
주의: a*는 공백 포함 거의 모든 줄을 일치시킬 수 있으므로, 다음과 같이 사용하는 것이 일반적입니다.
grep '\<a[a-zA-Z]*\>' test.log
예제 2) 특정 알파벳으로 시작하는 단어 검색
grep '^[ab]' test.log
a 또는 b로 시작하는 줄 전체를 출력합니다.
예제 3) 숫자로 끝나는 문자열 찾기
grep 'ab[0-9]' test.log
예를 들어 ab0, ab9 등 숫자 하나가 뒤에 붙은 형태만 출력합니다.
예제 4) 특정 범위 내 문자 찾기
grep '[a-c]' test.log
a, b, c가 포함된 모든 라인을 출력합니다.
예제 5) 대소문자 모두 일치시키기
grep '[aA]bc' test.log
abc와 Abc 모두 매칭됩니다.
📌 실무에서 자주 쓰는 grep 조합
# 로그에서 특정 에러 10줄만 보기
tail -n 1000 app.log | grep -i "fatal" -m 10
# 웹서버 로그에서 404 에러만 추출
grep '" 404 ' access.log
# 설정파일에서 주석 제외하고 "port" 검색
grep -v '^#' nginx.conf | grep "port"
📋 요약 정리
사용 목적 명령어 예시
특정 문자열 검색 | grep "error" test.log |
대소문자 무시 | grep -i "error" test.log |
줄 번호 포함 | grep -n "error" test.log |
반대 결과 보기 | grep -v "success" test.log |
하위 디렉토리 포함 | grep -r "error" ./ |
파일 이름만 보기 | grep -l "error" *.log |
정규표현식 검색 | grep -E "^[a-z]{3}[0-9]{2}" test.txt |
🧾 마치며
리눅스에서 grep은 단순한 문자열 검색 도구 그 이상입니다.
대용량 로그 분석, 에러 디버깅, 보안 감사, 설정값 추적 등 다양한 상황에서 실무자들의 손발이 되어주는 필수 명령어이죠.
이번 글에서 소개한 예제들과 옵션들을 실제 환경에서 하나하나 실습해보며 익힌다면, 여러분도 grep 장인이 될 수 있습니다.
앞으로 리눅스를 조금 더 편리하게, 그리고 스마트하게 사용하는 데 큰 도움이 되길 바랍니다. 🧡
'생활과 경제' 카테고리의 다른 글
리눅스에서 파일·폴더 용량 확인하는 법: df, du 명령어 완벽 정리 (0) | 2025.07.21 |
---|---|
[리눅스] 파일, 폴더 찾기 명령어 완전 정복 - find 사용법부터 실전 예제까지 (0) | 2025.07.21 |
CentOS7 리눅스에 Docker 설치하는 가장 간단한 방법 (실행 결과 포함) (0) | 2025.07.21 |
출산 준비물 리스트, 꼭 필요한 필수 아이템만 한눈에 정리! (1) | 2025.07.21 |
모자동실 뜻과 필요성, 그리고 조리원에서의 하루 일과 및 실제 후기 (0) | 2025.07.20 |