[Linux] grep 명령어
grep (Globally Find Regular – Expression and Print)
grep 은 리눅스 또는 유닉스 환경에서 무엇이든 검색 할 수 있는 명령어다. 어떤 소스를 분석 할때 함수가 어디서 콜 되었고, 변수가 어디서 사용 되었는지 등을 검색 할때 유용하게 쓰인다. 함수나 변수외에도 텍스트까지도 모두 검색 되므로, 출력 메시지를 검색해 그 메시지를 발생시킨 함수를 역추적 하기도 좋다.
$ grep [OPTION] [PATTERN] [FILE]
- -E: PATTERN을 확장 정규 표현식(Extended RegEx)으로 해석.
- -F: PATTERN을 정규 표현식(RegEx)이 아닌 일반 문자열로 해석.
- -G: PATTERN을 기본 정규 표현식(Basic RegEx)으로 해석.
- -P: PATTERN을 Perl 정규 표현식(Perl RegEx)으로 해석.
- -e: 매칭을 위한 PATTERN 전달.
- -f: 파일에 기록된 내용을 PATTERN으로 사용.
- -i: 대/소문자 무시.
- -v: 매칭되는 PATTERN이 존재하지 않는 라인 선택.
- -w: 단어(word) 단위로 매칭.
- -x: 라인(line) 단위로 매칭.
- -z: 라인을 newline(\n)이 아닌 NULL(\0)로 구분.
- -m: 최대 검색 결과 갯수 제한.
- -b: 패턴이 매치된 각 라인(-o 사용 시 문자열)의 바이트 옵셋 출력.
- -n: 검색 결과 출력 라인 앞에 라인 번호 출력.
- -H: 검색 결과 출력 라인 앞에 파일 이름 표시.
- -h: 검색 결과 출력 시, 파일 이름 무시.
- -o: 매치되는 문자열만 표시.
- -q: 검색 결과 출력하지 않음.
- -a: 바이너리 파일을 텍스트 파일처럼 처리.
- -I: 바이너리 파일은 검사하지 않음.
- -d: 디렉토리 처리 방식 지정. (read, recurse, skip)
- -D: 장치 파일 처리 방식 지정. (read, skip)
- -r: 하위 디렉토리 탐색.
- -R: 심볼릭 링크를 따라가며 모든 하위 디렉토리 탐색.
- -L: PATTERN이 존재하지 않는 파일 이름만 표시.
- -l: 패턴이 존재하는 파일 이름만 표시.
- -c: 파일 당 패턴이 일치하는 라인의 갯수 출력.
Example
grep 사용 예 | 명령어 옵션 |
---|---|
대상 파일에서 문자열 검색 | grep "STR" [FILE] |
현재 디렉토리 모든 파일에서 문자열 검색 | grep "STR" * |
특정 확장자를 가진 모든 파일에서 문자열 검색 | grep "STR" *.ext |
대소문자 구분하지 않고 문자열 검색 | grep -i "STR" [FILE] |
매칭되는 PATTERN이 존재하지 않는 라인 선택 | grep -v "STR" [FILE] |
단어(Word) 단위로 문자열 검색 | grep -w "STR" [FILE] |
검색된 문자열이 포함된 라인 번호 출력 | grep -n "STR" [FILE] |
하위 디렉토리를 포함한 모든 파일에서 문자열 검색 | grep -r "STR" * |
최대 검색 결과 갯수 제한 | grep -m 100 "STR" FILE |
검색 결과 앞에 파일 이름 표시 | grep -H "STR" * |
문자열 A로 시작하여 문자열 B로 끝나는 패턴 찾기 | grep "A.*B" * |
0-9 사이 숫자만 변경되는 패턴 찾기 | grep "STR[0-9]" * |
문자열 패턴 전체를 정규 표현식 메타 문자가 아닌 일반 문자로 검색하기 | grep -F "*[]?..." [FILE] |
정규 표현식 메타 문자를 일반 문자로 검색하기 | grep "\*" [FILE] |
문자열 라인 처음 시작 패턴 검색하기 | grep "^STR" [FILE] |
문자열 라인 마지막 종료 패턴 검색하기 | grep "$STR" [FILE] |