| HOME / 정보공유 / AIX 명령어 모음

grep
grep grep 명령 목적 파일에서 패턴을 탐색합니다. 구문
grep [ -E | -F ] [ -i ] [ -h ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Separator ] ] { [ -e PatternList ... ] [ -f PatternFile ... ] | PatternList ... } [ File ... ]
설명
grep 명령은 Pattern 매개변수에 지정된 패턴을 탐색하고 각 대응 행을 표준 출력에 기록합니다. 패턴은 ed 또는 egrep 명령의 양식을 가진 정규식으로 제한됩니다. grep 명령은 간단한 비결정적 알고리즘을 사용합니다.
File 매개변수에 하나 이상의 이름을 지정할 경우, grep 명령은 대응되는 행이 들어 있는 파일의 이름을 표시합니다. 쉘에 대해 특별한 의미를 갖는 문자 ($, *, [, |, ^, (, ), \ )가 Pattern 매개변수에 나타날 경우에는 따옴표로 묶어야 합니다. Pattern 매개변수가 단순한 문자열이 아닐 경우에는 패턴 전체를 작은따옴표로 묶어야 합니다. [a-z]와 같은 표현식에서, -(빼기 부호)는 현재 배열 순서에 따라 범위를 나타냅니다. 배열 순서는 문자 범위에서 사용할 등가 클래스를 정의할 수 있습니다. 지정된 파일이 없으면, grep은 표준 입력으로 간주합니다.
주:
2048 바이트로 행을 제한합니다.
단락(-p 플래그하에서)는 현재 5000자로 제한되어 있습니다.
예측 불가능한 결과가 나올 수 있으므로 특수 파일에 대해서는 grep 명령을 수행하지 마십시오.
입력 파일에는 NULL 문자가 들어 있지 않아야 합니다.
입력 파일은 캐리지 리턴 문자로 끝나야 합니다.
캐리지 리턴 문자를 정규식으로 대응시키지 않을 것입니다.
일부 플래그가 동시에 지정될 수 있더라도, 일부 플래그는 다른 플래그를 대체합니다. 예를 들어, -l 옵션은 다른 모든 플래그에 선행합니다. -E 및 -F 플래그를 모두 지정하면, 마지막에 지정된 플래그에 우선권이 있습니다.
플래그
-b 발견된 블록 번호가 각 행보다 우선합니다. 이 플래그는 문맥별 디스크 블록 번호를 찾는 데 유용합니다. -b 플래그를 stdin이나 파이프와 함께 사용할 수 없습니다.
-c 대응 행의 계수만 표시합니다.
-E 지정된 각 패턴을 확장 정규식(ERE)으로 취급합니다. ERE의 NULL 값을 각 행에 대응합니다.
주: -E 플래그가 있는 grep 명령은 egrep 명령과 같습니다. 단, 오류 및 사용법 메세지가 다르고 -s 플래그의 기능이 다릅니다.
-e PatternList 하나 이상의 탐색 패턴을 지정합니다. 이것은 단순한 패턴과 같이 작용하지만, 패턴이 -(빼기 부호)로 시작할 때 유용합니다. 패턴은 캐리지 리턴 문자로 분리되어야 합니다. NULL 패턴은 인접한 두 캐리지 리턴 문자나 캐리지 리턴 문자 ("\n)가 따라오는 인용부호로 지정될 수 있습니다. -E나 -F 플래그를 지정하지 않으면, 각 패턴을 기본 정규식(RBE)과 같이 취급합니다. grep는 여러 개의 -e 및 -f 플래그를 승인합니다. 행을 대응할 때 지정된 패턴은 모두 사용되지만 평가 순서는 지정되어 있지 않습니다.
-F 각각 지정된 패턴은 정규식 대신 문자열로 취급합니다. NULL 문자열은 각 행에 대응합니다.
주: -F 플래그가 있는 grep 명령은 fgrep 명령과 같습니다. 단, 오류 및 사용법 메세지가 다르고 -s 플래그의 기능이 다릅니다.
-fPatternFile 탐색 파일이 있는 파일을 지정합니다. 각 패턴은 캐리지 리턴 문자로 분리되어야 하고, 빈 행을 NULL 패턴으로 생각합니다. -E나 -F 플래그를 지정하지 않으면, 각 패턴을 기본 정규식(RBE)으로 취급합니다.
-h 대응되는 행이 포함되어 있는 파일의 이름이 해당 행에 추가되는 것을 방지합니다. 복수 파일을 지정할 때 파일 이름을 억제합니다.
-i 비교할 때 케이스(대문자 또는 소문자)를 무시합니다.
-l 대응 행이 있는 파일의 이름을 한 번만 나열합니다. 각 파일 이름을 캐리지 리턴 문자로 분리합니다. 표준 입력을 탐색할 때, 경로 이름(StandardInput)을 리턴합니다. -c와 -n 플래그와 결합한 -l 플래그는 -l 플래그처럼 행동합니다.
-n 파일의 상대 행 번호가 각 행을 선행합니다. 각 파일은 행 1에서 시작하고, 처리하는 각 파일에 대해 행 계수기를 다시 설정합니다.
-p[Separator] 대응 행이 들어 있는 전체 단락을 표시합니다. 단락을 단락 분리자로 분리하고, Sopatator 매개변수로 지정하는데, 단락은 탐색 패턴과 같은 양식의 패턴입니다. 단락 분리문자가 들어 있는 행은 분리문자로서만 사용되며 출력에는 결코 포함되지 않습니다. 디폴트 단락 분리자는 공백 행입니다.
-q 대응 행에 관계없이 표준 출력에 대한 모든 쓰기를 억제합니다. 입력 행을 선택하면, 0 상태로 종료합니다. -c, -l 및 -n 플래그와 결합한 -q 플래그는 -q 플래그처럼 행동합니다.
-s 존재하지 않거나 읽을 수 없는 파일에 대해 나타내는 오류 메세지를 억제합니다. 다른 오류 메세지는 억제하지 않습니다.
-v 지정된 패턴과 일치하지 않는 행을 모두 나타냅니다.
-w 단어 탐색을 수행합니다.
-x 추가 문자 없이 지정된 패턴과 정확히 일치하는 행을 나타냅니다.
-y 비교할 문자의 케이스를 무시합니다.
PatternList 탐색중에 사용하는 하나 이상의 패턴을 지정합니다. 이 패턴을 -e 플래그를 사용하여 지정된 것처럼 취급합니다.
파일 패턴을 탐색할 파일 이름을 지정합니다. 어떤 File 변수도 제공되지 않은 경우, 표준 입력을 사용합니다.
종료 상태
이 명령은 다음 종료 값을 리턴합니다.
0 일치를 발견했습니다.
1 일치를 발견하지 못했습니다.
>1 구문 오류가 발견되었거나 파일에 액세스할 수 없습니다(대응사항이 발견되었을 경우에도 해당).
예제
패턴 대응 문자 ?, [, ], \(, \), \{, and \}의 일부가 속한 패턴을 사용하려면, 다음과 같이 입력하십시오.
grep "^[a-zA-Z]" pgm.s
이것은 첫 문자가 글자(letter)인 pgm.s의 모든 행을 표시합니다.
패턴에 일치하지 않는 행을 모두 표시하려면, 다음과 같이 입력하십시오.
grep -v "^#" pgm.s
이것은 첫 문자가 #(파운드 기호)가 아닌 pgm.s의 모든 행을 표시합니다.
abc 또는 xyz 문자열과 대응하는 file1의 모든 행을 표시하려면, 다음과 같이 입력하십시오.
grep -E "abc|xyz" file1
test2라는 파일에서 $(달러 기호)를 탐색하려면, 다음과 같이 입력하십시오.
grep \\$ test2
쉘이 강제로 \$(단일 백슬래쉬, 달러 기호)를 grep 명령에 전달하기 위해서 \\(더블 백슬래쉬) 문자가 필요합니다. \(단일 백슬래쉬) 문자는 grep 명령에게 다음 문자(여기서는 $)를 표현 문자가 아닌 리터럴 문자로 취급하도록 지시합니다. 백슬래쉬와 같은 ESC 문자를 사용하지 않도록 하려면 fgrep 명령을 사용하십시오.
파일
/usr/bin/grep grep 명령이 들어 있습니다.
관련 정보
ed 명령, egrep 명령, fgrep 명령, sed 명령.