때때로 개발을 하다보면 터미널에서 명령어를 통해 검색하는게 더 편할때가 있다.
그중에 grep명령어를 가장 많이 사용하는데, 옵션에 대해 전부 알지 못한다는 FOMO가 와서 여기에 정리해서 기록한다.
grep이란?
grep은 Global Regular Expression Print의 약자로, 파일 내에서 특정 문자열이나 패턴을 검색할 때 사용하는 Bash Shell 명령어다.
grep의 옵션
| 옵션 | 설명 | 비고 |
| -i | Ignore Case | 대소문자를 구분하지 않고 검색 |
| -v | Invert Match | 패턴과 일치하지 않는 라인만 출력 (제외 검색) |
| -n | Line Number | 결과 앞에 파일 내 행 번호를 표시 |
| -r / -R | Recursive | 하위 디렉토리를 포함한 모든 파일에서 검색 |
| -l | Files with Matches | 문자열이 포함된 파일의 이름만 출력 |
| -c | Count | 패턴이 일치하는 행의 개수만 출력 |
| -w | Word | 패턴이 독립된 단어로 일치하는 경우만 검색 |
| -A [숫자] | After | 일치하는 행 뒤의 [숫자]만큼의 행을 추가로 표시 |
| -B [숫자] | Before | 일치하는 행 앞의 [숫자]만큼의 행을 추가로 표시 |
| -C [숫자] | Context | 일치하는 행 전후로 [숫자]만큼의 행을 추가로 표시 |
활용 예시
대소문자 무시하고 검색 (-i)
: 주로 파일 안에서 'error', 'Error', 'ERROR' 등 대소문자 관계없이 찾고 싶을 때 사용
grep -i "error" system.log
특정 단어 제외하고 보기 (-v)
: 로그 파일에서 'DEBUG' 메시지를 제외한 나머지 중요한 정보만 보고 싶을 때 사용
grep -v "DEBUG" server.log
행 번호와 함께 출력 (-n)
: 검색 결과가 파일의 몇 번째 줄에 있는지 확인하여 코드를 수정할 때 사용
grep -n "function_name" main.py
디렉토리 전체에서 검색 (-r)
현재 디렉토리 및 모든 하위 폴더에 있는 파일들 중에서 특정 문자열을 찾을 때 사용
grep -r "TODO" ./src
정확히 일치하는 단어만 검색 (-w)
예를 들어, apple을 검색할 때 pineapple은 제외하고 오직 apple이라는 단어만 찾고 싶을 때 사용
grep -w "apple" fruits.txt
검색 결과의 전후 맥락 보기 (-A, -B, -C)
에러 메시지가 발생한 시점의 앞뒤 상황을 파악할 때 필수적으로 사용
# 에러 발생 행 전후 3줄씩 같이 보기
grep -C 3 "NullPointerException" error.log
파이프 | 활용
:grep은 단독으로도 쓰이지만, 다른 명령어의 출력 결과를 필터링할 때 가장 활용도가 높다.
실행중인 특정 프로세스 찾기
ps -ef | grep "python"
파일 목록 중 특정 확장자나 이름 필터링
ls -al | grep ".txt"
이렇게 grep을 다른 명령어와 옵션을 잘 섞어서 사용하면, 수많은 파일 속에서 원하는 정보를 단숨에 찾아낼 수 있다.

내게 어려움은 성장통일 뿐이다
'혼공' 카테고리의 다른 글
| Git Commit 잔디 유지하면서 Repository 정리 (0) | 2026.05.03 |
|---|---|
| 예외처리 (0) | 2026.04.27 |
| [Bash] 기본 명령어 모음 (0) | 2026.04.23 |
| [Java] while문 vs do while문 (0) | 2026.04.23 |
| [Bash] rm 명령어 (0) | 2026.04.23 |