리눅스를 조금이라도 써본 분이라면 grep이라는 명령어를 한 번쯤 들어보셨을 거예요.
grep은 파일이나 출력 결과에서 특정 문자열(패턴)을 찾아주는 강력한 검색 도구예요.
예를 들어, 서버 로그에서 에러 메시지를 찾거나, 수천 개의 텍스트 파일 중 특정 키워드를 포함한 줄만 뽑아낼 때 아주 유용합니다.
단순히 검색 기능뿐 아니라 정규표현식, 파이프라인 명령어와 함께 사용하면 데이터 분석, 로그 추적, 보안 점검 등 다양한 분야에서 필수 도구로 활용됩니다.
기본 사용법
grep [옵션] '검색할_문자열' 파일명
예시
grep "error" server.log
→ server.log 파일에서 error라는 단어가 포함된 모든 줄을 출력.
옵션을 지정하지 않으면 대소문자를 구분하고, 단순히 해당 문자열이 포함된 줄을 모두 보여줍니다.
자주 쓰는 옵션 정리
- -i : 대소문자 구분 없이 검색
- -n : 검색 결과와 함께 줄 번호 출력
- -v : 패턴과 일치하지 않는 줄만 출력 (반전 검색)
- -r : 하위 디렉토리까지 재귀적으로 검색
- -l : 해당 문자열이 포함된 파일 이름만 표시
- -c : 일치하는 줄의 개수만 출력
- -E : 정규표현식(extended regex) 사용 가능
- --color=auto : 일치하는 부분을 색상으로 강조 표시
실무 예제
- 로그에서 "error" 찾기 (대소문자 무시)
grep -i "error" /var/log/syslog - 특정 단어 제외하고 검색
grep -v "DEBUG" app.log - 여러 키워드 동시에 검색
grep -E "error|fail|fatal" app.log - 디렉토리 전체 검색
grep -rn "password" /etc - 파일 이름만 출력
grep -rl "DB_CONNECTION" .
파이프와 함께 사용하기
grep은 다른 명령어와 결합해서 필터링할 때 특히 강력합니다.
- 실행 중인 프로세스에서 nginx 검색
ps aux | grep nginx - 80번 포트가 열려 있는지 확인
netstat -tuln | grep 80 - find와 결합해 로그 파일 전체에서 검색
find . -name "*.log" | xargs grep "error"
정규표현식 활용
grep의 진짜 힘은 정규표현식과 함께 쓸 때 발휘됩니다.
- 3자리 숫자만 검색
grep -E "^[0-9]{3}$" data.txt - 대문자로 시작하는 줄 검색
grep -E "^[A-Z].*" names.txt - 이메일 주소 패턴 검색
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-z]{2,}" users.txt
실무 꿀팁
- --color=auto 옵션을 사용하면 검색어가 색상으로 표시되어 가독성이 좋아집니다.
- -r 옵션으로 디렉토리 전체를 검색할 수 있어 대규모 프로젝트에서도 빠른 키워드 추출이 가능합니다.
- find 명령어와 함께 쓰면 파일 검색과 내용 검색을 동시에 할 수 있어 효율적입니다.
- 로그 분석 시 grep -i error | grep -v debug처럼 파이프를 연속으로 사용하면 불필요한 결과를 걸러낼 수 있습니다.
마무리
grep은 리눅스에서 데이터를 찾고 필터링하는 데 있어 거의 표준처럼 쓰이는 명령어예요.
옵션과 정규표현식을 적절히 조합하면 수십만 줄의 로그도 단 몇 초 만에 원하는 정보만 추출할 수 있습니다.
서버 운영, 개발, 데이터 분석을 한다면 꼭 익혀두세요.
특히, 파이프라인과 결합하는 방법을 알면 grep의 진가를 제대로 느낄 수 있을 거예요.
'리눅스의 모든 것' 카테고리의 다른 글
리눅스 서비스 등록 방법 – systemd로 프로그램 자동 실행 설정하기 (2) | 2025.08.15 |
---|---|
리눅스 SSH 설정 방법 – 설치부터 보안 강화까지 완벽 가이드 (2) | 2025.08.14 |
리눅스 사용자에게 sudo 권한 주는 법 – 실전 명령어 쉽게 설명 (1) | 2025.08.12 |
리눅스 하드디스크 마운트 따라하기 – 새 디스크 붙이는 실전 가이드 (2) | 2025.08.11 |
리눅스에서 Docker 설치하는 법 – 초보자도 10분 만에 완성 (1) | 2025.08.10 |