1. grep 이란?
grep은 파일 안에서 특정 문자열(패턴)을 검색하는 명령어다.
로그 파일에서 에러를 찾거나, 설정 파일에서 특정 설정값을 확인할 때 가장 많이 사용된다.
앞에서 정리한 상대경로·절대경로 개념이 바로 이 grep부터 체감되기 시작한다.
어느 파일을 대상으로 검색하느냐에 따라 결과가 완전히 달라지기 때문이다.
2. 기본 사용 방법
2.1 파일에서 문자열 검색
app.log 파일에서 error가 포함된 모든 줄을 출력한다.
2.2 여러 파일에서 검색
현재 디렉터리의 모든 .log 파일에서 error를 검색한다.
3. 자주 사용하는 옵션 정리
3.1 -n : 줄 번호 출력 (가장 많이 사용)
검색된 문자열이 몇 번째 줄에 있는지 함께 출력한다.
로그 분석 시 거의 필수 옵션이다.
3.2 -i : 대소문자 구분 없이 검색
error, ERROR, Error 등을 모두 검색한다.
3.3 -v : 패턴을 제외한 줄 출력 (반대 조건)
debug가 포함되지 않은 줄만 출력한다.
불필요한 로그를 제외할 때 자주 사용된다.
3.4 -r / -R : 디렉터리 재귀 검색
지정한 디렉터리 아래 모든 파일을 대상으로 검색한다.
❗ 권한 문제나 파일 수가 많으면 시간이 오래 걸릴 수 있다.
3.5 -l : 파일 이름만 출력
검색어가 포함된 파일 이름만 출력한다.
“어떤 파일에 들어 있는지”만 알고 싶을 때 사용한다.
3.6 -c : 매칭된 줄 개수 출력
해당 파일에 error가 몇 줄 있는지 숫자만 출력한다.
3.7 -w : 단어 단위로 정확히 검색
error_code, error123 같은 단어는 제외하고
error라는 단어만 정확히 검색한다.
4. 옵션 조합 예제 (이건 꼭!)
4.1 로그 분석 기본 조합 (실무 최다)
- 대소문자 무시
- 줄 번호 출력
👉 로그 분석할 때 사실상 기본 세트
4.2 디렉터리 전체에서 에러 검색
- 여러 로그 파일 한 번에 검색
- 운영 서버에서 매우 자주 사용
4.3 불필요한 로그 제외하고 보기
4.4 어떤 파일에 들어 있는지만 확인
5. 파이프(|)와 함께 쓰는 grep (중요)
grep은 단독으로도 많이 쓰지만,
다른 명령어 결과를 필터링하는 용도로 더 많이 사용된다.
5.1 ps + grep
실행 중인 프로세스 중 nginx가 포함된 것만 출력
5.2 ls + grep
현재 디렉터리에서 .log 파일만 필터링
5.3 find + grep
6. 초보자가 자주 하는 실수
6.1 경로 문제로 검색이 안 되는 경우
현재 위치에 app.log가 없으면 실패한다.
👉 해결: 절대경로 사용
6.2 너무 넓은 범위 재귀 검색
- 서버 전체 검색
- 성능 문제 발생 가능
👉 검색 범위는 항상 최소화
6.3 결과가 너무 많아서 못 봄
👉 해결: less와 함께 사용
7. 실무에서 자주 쓰는 사용 타이밍
- 에러 로그 찾기
- 설정 파일에서 특정 값 확인
- 배포 후 문제 원인 추적
- 프로세스/출력 결과 필터링
8. 정리 한 줄 요약
- grep은 파일 내용 검색의 기본 도구다.
- 이것만 기억하자:
-
grep -in "검색어" 파일