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
'shell' 카테고리의 다른 글
| Shell Expansion: Brace Expansion, Tilde Expansion, Variable Expansion, Command Substitution, Arithmetic Expansion, Filed Splitting, Globbing (0) | 2026.01.11 |
|---|---|
| Shell Initialization File-dot files: .profile, .bashrc, .zprofile, .zshrc (0) | 2026.01.02 |
| PowerShell의 초기화-profile (0) | 2025.12.31 |
| iconv, clip.exe, pbcopy, xclip, Set-Clipboard (0) | 2025.12.29 |
| kill: Process에게 Signal을 보내기. (3) | 2025.07.25 |