grep 명령

용도

파일에서 패턴을 검색합니다.

구문

grep [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ][ -u ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] ] ] [ -p [구분자 ] ] { [ -e PatternList... ] [ -f PatternFile... ] | PatternList ... } [ 파일 ... ]

설명

grep 명령은 Pattern 매개변수가 지정하는 패턴을 검색하고 대응하는 각 행을 표준 출력에 기록합니다. 패턴은 ed 또는 egrep 명령의 스타일로 된 정규식으로 제한됩니다. grep 명령은 압축 비결정성 알고리즘을 사용합니다.

grep 명령은 File 매개변수에 두 개 이상의 파일을 지정하는 경우 대응되는 행을 포함하는 파일의 이름을 표시합니다. 쉘에 특별한 의미를 갖는 문자($, *, [, |, ^, (, ), \ )는 Pattern 매개변수에 나타날 때 인용 부호로 묶어야 합니다. Pattern 매개변수가 단순한 문자열이 아닐 경우에는 패턴 전체를 작은 인용 부호로 묶어야 합니다. 다음과 같은 표현식에서[a-z](마이너스 기호) cml은 현재 데이터 정렬 순서에 따라 범위를 지정합니다. 배열 순서는 문자 범위에서 사용할 등가 클래스를 정의할 수 있습니다. 지정된 파일이 없으면 grep는 표준 입력으로 가정합니다.

주:
  1. 예측 불가능한 결과를 생성하기 때문에 특수 파일에서 grep 명령을 실행하지 마십시오. 입력 행은 NULL 문자를 포함해서는 안됩니다.
  2. 입력 파일은 줄 바꾸기 문자로 끝나야 합니다.
  3. 줄 바꾸기 문자는 정규식과 대조되지 않습니다.
  4. 일부 플래그는 동시에 지정될 수 있지만, 일부 플래그는 다른 플래그를 재정의합니다. 예를 들어, -l 옵션이 다른 모든 플래그에 우선합니다. 그리고 -E-F 플래그를 모두 지정하는 경우 마지막으로 지정된 플래그가 우선순위를 갖습니다.

플래그

항목 설명
-b 각 행 앞에 행이 발견된 블록 번호가 선행합니다. 이 플래그를 사용하면 문맥으로 디스크 블록 번호를 찾는 데 유용합니다. -b 플래그는 stdin이나 파이프로부터의 입력에 사용할 수 없습니다.
-c 일치하는 행의 수만 표시합니다.
-E 지정된 각 패턴을 확장된 정규식(ERE)으로 처리합니다. ERE의 널(NULL)값이 모든 행에 대응합니다.
참고: -E 플래그가 있는 grep 명령은 오류 및 사용 메시지가 다르고 -s 플래그의 기능이 다르다는 점을 제외하면 egrep 명령과 동일합니다.
-e PatternList 하나 이상의 검색 패턴을 지정합니다. 이 플래그는 단순 패턴처럼 작동하지만 패턴이 -(빼기)로 시작하는 경우에 유용합니다. 패턴은 줄 바꾸기 문자로 분리되어야 합니다. 널(NULL) 패턴은 두 개의 인접 줄 바꾸기 문자 또는 뒤에 줄 바꾸기 문자("\n)가 오는 인용 부호로 지정할 수 있습니다. -E 또는 -F 플래그를 지정하지 않는 경우 각 패턴은 기본 정규식(BRE)처럼 처리됩니다. 다중 -e-f 플래그는 grep에서 허용됩니다. 행과 대응하는 경우 지정된 패턴 모두 사용되지만 평가의 순서는 지정되지 않습니다.
-F 지정된 각 패턴을 정규식 대신 문자열로 처리합니다. 널(NULL) 문자열은 모든 행에 대응합니다.
참고: -F 플래그가 있는 grep 명령은 오류 및 사용 메시지가 다르고 -s 플래그의 기능이 다르다는 점을 제외하면 fgrep 명령과 동일합니다.
-f PatternFile 검색 패턴을 포함하는 파일을 지정합니다. 각 패턴은 줄 바꾸기 문자로 분리되어야 하며 빈 행은 널(NULL) 패턴으로 간주됩니다. -E 또는 -F 플래그를 지정하지 않는 경우 각 패턴은 기본 정규식(BRE)처럼 처리됩니다.
-h 대응하는 행을 포함하는 파일의 이름이 해당 행에 첨가되는 것을 방지합니다. 복수의 파일이 지정되는 경우 파일 이름을 억제합니다.
-h -r 또는 -R 옵션이 지정되고 유형 디렉토리의 파일을 참조하는 기호 링크가 명령행에서 지정되는 경우 grep는 기호 링크가 참조하는 디렉토리의 파일과 그 아래 파일 계층에 있는 모든 파일을 검색합니다.
-i 비교 시 문자의 대소문자(대문자 또는 소문자)를 무시합니다.
항목 설명
-l 대응하는 행을 포함하는 파일의 이름(한 번씩)만 나열합니다. 각 파일 이름은 줄 바꾸기 문자로 분리됩니다. 표준 입력이 검색되는 경우 경로 이름이(StandardInput)가 반환됩니다. -c-n 플래그의 조합과 -l 플래그를 사용하는 것은 -l 플래그만 사용하는 것처럼 작동합니다.
-l -r 또는 -R 옵션이 지정되고 유형 디렉토리의 파일을 참조하는 기호 링크가 명령행에서 지정되거나 파일 계층 횡단 중에 발견되는 경우 grep는 기호 링크가 참조하는 디렉토리의 파일과 그 아래 파일 계층에 있는 모든 파일을 검색합니다. -H-L을 모두 지정하면 명령행에서 마지막으로 지정된 옵션이 적용됩니다.
-n 파일의 상대 행 번호가 각 행 앞에 옵니다. 각 파일은 행 1에서 시작하고 행 계수기는 처리되는 각 파일에 대해 재설정됩니다.
-p[구분 기호] 대응 행이 있는 전체 단락을 표시합니다. 단락은 Separator 매개변수에서 지정된 대로 단락 구분자에 의해 구분되며 이는 검색 패턴과 같은 양식의 패턴입니다. 단락 구분자를 포함하는 행은 구분자로만 사용되며 출력에는 결코 포함되지 않습니다. 디폴트 단락 구분자는 공백 행입니다.
-q 대응하는 행에 관계없이 표준 출력에 대한 모든 쓰기를 억제합니다. 입력 행이 선택되는 경우 0 상태로 종료됩니다. -c, -l-n 플래그의 조합과 -q 플래그를 사용하는 것은 -q 플래그만 사용하는 것처럼 작동합니다.
-r 디렉토리를 반복적으로 검색합니다. 디폴트로 디렉토리에 대한 링크를 따라갑니다.
-R 디렉토리를 반복적으로 검색합니다. 디폴트로 디렉토리에 대한 링크를 따라가지 않습니다.
-s 존재하지 않거나 읽을 수 없는 파일에 대해 일상적으로 작성되는 오류 메시지를 억제합니다. 다른 오류 메시지는 억제되지 않습니다.
-u 출력이 버퍼링 해제되도록 합니다.
-v 지정된 패턴에 대응하지 않는 모든 행을 표시합니다.
-w 단어 검색을 수행합니다.
-x 추가 문자 없이 정확하게 지정된 패턴과 일치하는 행을 표시합니다.
-y 비교를 수행할 때 문자의 크기를 무시합니다.
PatternList 검색 중에 사용될 하나 이상의 패턴을 지정합니다. 패턴은 -e 플래그를 사용하여 지정된 것처럼 처리됩니다.
file 패턴을 검색할 파일 이름을 지정합니다. File 변수가 지정되지 않는 경우 표준 입력이 사용됩니다.

종료 상태

이 명령은 다음과 같은 종료값을 리턴합니다.

항목 설명
0 일치를 발견했습니다.
1 일치를 찾을 수 없습니다.
> 1 구문 오류가 발견되었거나 파일에 액세스할 수 없습니다(일치가 발견되었을 경우에도 해당).

  1. 패턴 대응 문자 ?, [, ], \(, \), \{, and \}의 일부가 속한 패턴을 사용하려면, 다음을 입력하십시오.
    grep  "^[a-zA-Z]"  pgm.s 
    이렇게 하면 다음과 같은 모든 줄이 표시됩니다pgm.s첫 글자가 문자인 경우
  2. 패턴에 일치하지 않는 행을 모두 표시하려면, 다음을 입력하십시오.
    grep   -v  "^#" pgm.s
    이렇게 하면 다음과 같은 모든 줄이 표시됩니다pgm.s첫 번째 문자가#(파운드 기호).
  3. 모든 줄을 표시하려면file1파일과 일치하는abc또는xyz문자열을 입력합니다:
    grep   -E  "abc|xyz"  file1
  4. 검색하려면$(달러 기호)를test2를 입력합니다:
    grep \\$ test2
    다음\\(이중 백슬래시) 문자가 있어야 셸이 강제로\$(백슬래시 하나, 달러 기호)를 grep 명령에 추가합니다. 다음\(백슬래시 하나) 문자는 grep 명령이 다음 문자(이 예에서는$)를 표현 문자가 아닌 리터럴 문자로 사용합니다. 백슬래시와 같은 이스케이프 문자의 사용을 피하려면 fgrep 명령을 사용하십시오.
  5. /tmp를 통해 반복적으로 검색하여 디렉토리를 가리키는 링크를 통한 반복 없이 단어 IBM이 있는 파일을 찾으려면 다음을 입력하십시오.
    grep –R IBM /tmp
    또는
    grep –r -H IBM /tmp
  6. /tmp를 통해 반복적으로 검색하여 단어 IBM이 있는 파일을 찾고 링크를 통한 반복도 하려면 다음을 입력하십시오.
    grep –r IBM /tmp
    또는
    grep -R -L IBM /tmp

파일

항목 설명
/usr/bin/grep grep 명령을 포함합니다.