grep — 리눅스 기본 명령어
Linux / 리눅스 기본 명령어 / grep.html
파일이나 입력에서 특정 패턴을 검색하는 강력한 텍스트 검색 명령어.
기본 정보
| 명령어 이름 | grep (global regular expression print) |
|---|---|
| 한 줄 소개 | 파일이나 입력에서 특정 패턴을 검색하는 강력한 텍스트 검색 명령어. |
| 제공 | GNU grep (모든 Linux 배포판 기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/grep.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 기본 명령어 (태그: 검색, 텍스트, 정규식, 리눅스, 기본) |
이 명령어는 무엇인가?
grep은 파일이나 입력에서 특정 문자열이나 정규식 패턴에 해당하는 줄을 검색해 출력하는 명령어입니다. 리눅스에서 가장 자주 사용되는 도구 중 하나이며, 로그 분석·설정 확인·코드 탐색에 폭넓게 활용됩니다.
정규 표현식을 지원해 간단한 문자열 검색부터 복잡한 패턴 매칭까지 처리할 수 있고, -i(대소문자 무시), -v(반전), -r(재귀) 등 유용한 옵션이 풍부합니다.
어떤 문제를 해결하는가?
- 파일에서 특정 키워드를 검색합니다.
- 로그에서 에러 메시지를 찾습니다.
- 설정 파일에서 특정 옵션을 확인합니다.
- 여러 파일에서 같은 패턴을 일괄 검색합니다.
주요 기능
기본 문자열 검색
파일에서 특정 문자열이 포함된 줄을 출력합니다.
- 활용 상황: 간단한 키워드 검색이 필요할 때.
- 얻는 결과: 해당 문자열이 포함된 모든 줄이 표시됩니다.
- 제한 사항: 대소문자를 구분할 수 있습니다 (옵션으로 변경 가능).
정규식 검색
정규 표현식으로 복잡한 패턴을 검색합니다.
- 활용 상황: 복잡한 조건으로 텍스트를 검색할 때.
- 얻는 결과: 정규식에 맞는 줄이 표시됩니다.
- 제한 사항: 정규식 문법이 복잡할 수 있습니다.
대소문자 무시 (-i)
대소문자를 구분하지 않고 검색합니다.
- 활용 상황: 대소문자가 혼재된 텍스트를 검색할 때.
- 얻는 결과: 모든 대소문자 조합이 매칭됩니다.
- 제한 사항: 일부 로케일에서 예상과 다른 동작을 할 수 있습니다.
재귀 검색 (-r)
디렉토리 아래 모든 파일을 재귀적으로 검색합니다.
- 활용 상황: 프로젝트 전체에서 키워드를 찾을 때.
- 얻는 결과: 하위 디렉토리의 모든 파일이 검색됩니다.
- 제한 사항: 대용량 디렉토리는 느려질 수 있습니다.
설치 및 실행
기본 탑재 확인
모든 Linux 배포판에 기본 포함되어 있습니다.
which grep
grep --version
설치 (경량 환경)
일반적으로 이미 설치되어 있습니다.
sudo apt install grep # Debian/Ubuntu
sudo dnf install grep # Fedora
실제 사용 예제
기본 문자열 검색
파일에서 문자열을 검색합니다.
# 파일에서 검색
grep "error" /var/log/syslog
# 대소문자 무시
grep -i "ERROR" /var/log/syslog
# 줄 번호 표시
grep -n "error" /var/log/syslog
# 반전 (error가 없는 줄)
grep -v "error" /var/log/syslog
여러 파일 및 재귀 검색
여러 파일에서 일괄 검색합니다.
# 여러 파일 검색
grep "TODO" *.py
# 디렉토리 재귀 검색
grep -r "import" ./src/
# 파일 유형 지정
grep --include="*.py" -r "def main" .
# 결과 없는 파일 이름도 표시
grep -rl "config" /etc/
정규식 및 파이프 검색
정규식으로 정밀 검색합니다.
# 정규식 검색
grep -E "^#" /etc/nginx/nginx.conf
# IP 주소 패턴
grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" access.log
# 파이프와 함께
cat access.log | grep " 404 " | wc -l
# ps에서 프로세스 검색
ps aux | grep nginx