grep
- 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어
- 단순 문자열 매칭뿐만 아니라 정규 표현식(Regular Expression)에 의한 패턴 매칭(Pattern Matching) 방식도 사용 가능
정규표현식
| 메타 문자 (Meta Character) |
설명 |
| . |
정확히 1개의 문자와 매치 |
| * |
앞 문자가 0회 이상 매치 |
| {n} |
앞 문자가 정확히 n회 매치 |
| {n,m} |
앞 문자가 n회 이상 m회 이하 매치 |
| [ ] |
대괄호에 포함된 문자 중 한개와 매치 |
| [^ ] |
대괄호 안에서 ^뒤에 있는 문자들을 제외 |
| [ - ] |
대괄호 안 문자 범위에 있는 문자들 매치 |
| () |
표현식을 그룹화 |
| ^ |
문자열 라인의 처음 |
| $ |
문자열 라인의 마지막 |
| ? |
앞 문자가 0 또는 1회 매치 (확장 정규 표현식) |
| + |
앞 문자가 1회 이상 매치 (확장 정규 표현식) |
| | |
표현식 논리 OR (확장 정규 표현식) |
grep 명령어 옵션
| OPTION |
설명 |
| -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 |
파일 당 패턴이 일치하는 라인의 갯수 출력 |
grep 사용 예시
$ grep [OPTION] [PATTERN] [FILE]
#대상 파일에서 문자열 검색
$ grep "STR" [FILE]
# 현재 디렉토리 모든 파일에서 문자열 검색
$ grep "STR" *
# 특정 확장자를 가진 모든 파일에서 문자열 검색
$ grep "STR" *.ext
# A로 시작하여 B로 끝나는 패턴 찾기
$ grep "A.*B" *
# 0-9 사이 숫자만 변경되는 패턴 찾기
$ grep "STR[0-9]" *
# 문자열 패턴 전체를 정규 표현식 메타 문자가 아닌 일반 문자로 검색하기
$ grep -F "*[]?..." [FILE]
# 정규 표현식 메타 문자를 일반 문자로 검색하기
$ grep "\*" [FILE]
# 문자열 라인 처음 시작 패턴 검색하기
$ grep "^STR" [FILE]
# 문자열 라인 마지막 종료 패턴 검색하기
$ grep "$STR" [FILE]