Linux

[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]

Reference

Leave a Reply

Your email address will not be published. Required fields are marked *