기능 설명: 파일에서 조건에 맞는 문자열을 찾아줍니다.
구문: grep [-abcEFGhHilLnqrsvVwxy][-A<열 수 표시>][-B<열 수 표시>][-C<열 수 표시>][-d<작업 수행> ][-e<템플릿 스타일>][-f<템플릿 파일>][--help][템플릿 스타일][파일 또는 디렉터리...]
보충 지침: grep 명령이 사용됩니다. 파일 검색 파일의 내용이 지정된 템플릿 스타일과 일치하는 것으로 확인되면 기본 grep 명령은 템플릿 스타일을 포함하는 열을 표시합니다. 파일 이름이 지정되지 않거나 주어진 파일 이름이 "-"인 경우 grep 명령은 표준 입력 장치에서 데이터를 읽습니다.
매개변수:
-a 또는 --text 바이너리 데이터를 무시하지 마십시오.
-A<열 수 표시> 또는 --after-context=<열 수 표시> 템플릿 스타일과 일치하는 열을 표시하는 것 외에도 해당 열 뒤에 내용을 표시합니다.
-b 또는 --byte-offset 템플릿 스타일과 일치하는 열을 표시하기 전에 열의 첫 번째 문자의 비트 번호를 표시합니다.
-B<열 개수 표시> 또는 --before-context=<열 개수 표시> 템플릿 스타일에 맞는 열을 표시하는 것 외에도 해당 열 앞의 내용도 표시합니다.
-c 또는 --count 템플릿 스타일과 일치하는 열 수를 계산합니다.
-C<열 개수 표시> 또는 --context=<열 개수 표시> 또는 -<열 개수 표시> 그 열 내용 뒤에.
-d
-e 또는 --regexp= 파일 콘텐츠 검색을 위한 템플릿 스타일로 문자열을 지정합니다.
-E 또는 --extended-regexp 템플릿 스타일을 확장된 일반 표기법으로 사용합니다.
-f 또는 --file= 콘텐츠에 하나 이상의 템플릿 스타일이 포함된 템플릿 파일을 지정하여 grep이 템플릿 조건을 충족하는 파일 콘텐츠를 찾을 수 있도록 합니다. 템플릿 스타일.
-F 또는 --fixed-regexp 템플릿 스타일을 고정 문자열 목록으로 처리합니다.
-G 또는 --basic-regexp 템플릿 스타일을 일반적인 표현으로 사용합니다.
-h 또는 --no-filename 템플릿 스타일과 일치하는 열을 표시하기 전에 해당 열이 속한 파일 이름을 지정하지 마십시오.
-H 또는 --with-filename 템플릿 스타일과 일치하는 열을 표시하기 전에 해당 열이 속한 파일 이름을 나타냅니다.
-i 또는 --ignore-case 대문자와 소문자의 차이를 무시합니다.
-l 또는 --file-with-matches 파일 내용이 지정된 템플릿 스타일과 일치하는 파일 이름을 나열합니다.
-L 또는 --files-without-match 파일 내용이 지정된 템플릿 스타일과 일치하지 않는 파일 이름을 나열합니다.
-n 또는 --line-number 템플릿 스타일과 일치하는 열을 표시하기 전에 해당 열의 열 번호를 표시합니다.
-q, --quiet 또는 --silent는 정보를 표시하지 않습니다.
-r 또는 --recursive 이 매개변수는 "-d recurse" 매개변수를 지정하는 것과 동일한 효과를 갖습니다.
-s 또는 --no-messages 오류 메시지를 표시하지 않습니다.
-v 또는 --revert-match 검색을 되돌립니다.
-V 또는 --version 버전 정보를 표시합니다.
-w 또는 --word-regexp 전체 단어와 일치하는 열만 표시합니다.
-x 또는 --line-regexp 모든 열과 일치하는 열만 표시합니다.
-y 이 매개변수는 "-i" 매개변수를 지정하는 것과 동일한 효과를 갖습니다.
--help 온라인 도움말.
linux grep 명령 사용
grep 명령을 사용하여 www.linuxso.com에서 텍스트 파일 검색
여러 텍스트 파일에서 문자열을 찾으려면 ‘ grep' 명령을 실행합니다. 'grep'은 텍스트에서 지정된 문자열을 검색합니다.
'/usr/src/linux/Documentation' 디렉토리에서 'magic' 문자열이 있는 파일을 검색한다고 가정합니다.
$ grep Magic /usr/src/linux/Documentation/*
sysrq .txt :* 매직 SysRQ 키를 어떻게 활성화하나요?
sysrq.txt:* 매직 SysRQ 키를 어떻게 사용하나요?
'sysrp.txt' 파일에는 이 문자열이 포함되어 있으며 SysRQ의 기능을 설명합니다.
기본적으로 'grep'은 현재 디렉터리만 검색합니다. 이 디렉터리 아래에 하위 디렉터리가 많은 경우 'grep'은 다음과 같이 목록을 표시합니다.
grep: sound: Is a 디렉터리
이렇게 하면 'grep'의 출력을 읽기 어려울 수 있습니다. 여기에는 두 가지 해결 방법이 있습니다.
하위 디렉터리 검색을 명시적으로 요청: grep -r
또는 하위 디렉터리 무시: grep -d 건너뛰기
물론 많은 출력이 예상되면 파이프할 수 있습니다. read on 'less'
$ grep Magic /usr/src/linux/Documentation/* | less
이렇게 하면 더 편리하게 읽을 수 있습니다.
한 가지 주의할 점은 파일 필터링 방법을 제공해야 한다는 것입니다(모든 파일을 검색하려면 * 사용). 잊어버린 경우 'grep'은 프로그램이 중단될 때까지 기다립니다. 이 문제가 발생하면
다음은 몇 가지 흥미로운 명령줄 매개변수입니다.
grep -i 패턴 파일: 대소문자를 구분하지 않고 검색합니다. 기본값은 대소문자를 구분합니다.
grep -l 패턴 파일: 일치하는 파일 이름만 나열됩니다.
grep -L 패턴 파일: 일치하지 않는 파일 이름이 나열됩니다.
grep -w 패턴 파일: 일치하는 파일 이름만 나열됩니다. 문자열의 일부가 아닌 전체 단어(예: 'magic'이 아닌 'magic'과 일치),
grep -C 숫자 패턴 파일: 일치하는 컨텍스트는 각각 [number]줄을 표시합니다.
grep Pattern1 | 패턴1 또는 패턴2와 일치하는 줄 표시,
grep Pattern1 파일 | grep Pattern2: 패턴1과 패턴2 모두 일치하는 줄을 표시합니다.
검색을 위한 몇 가지 특수 기호도 있습니다.
< 및 >는 각각 단어의 시작과 끝을 표시합니다.
예:
grep man *은 'Batman', 'manic', 'man' 등과 일치합니다.
grep '
'^': 일치하는 문자열이 줄의 시작 부분에 있음을 의미
'$': 일치하는 문자열이 줄의 끝에 있음을 의미
명령에 익숙하지 않은 경우 라인 매개변수를 사용하려면 reXgrep과 같은 그래픽 인터페이스 grep에서 ''를 시도해 볼 수 있습니다. 이 소프트웨어는 AND, OR, NOT과 같은 구문과 아름다운 버튼을 제공합니다 :-). 더 명확한 출력이 필요한 경우 fungrep 을 사용해 보십시오.
.grep 검색 문자열
명령 형식:
grep string filename
문자열을 찾는 방법은 여러 가지가 있습니다. 예를 들어 M으로 시작하는 모든 줄을 찾고 싶습니다. 이때, 패턴을 도입해야 합니다. 다음은 몇 가지 간단한 예와 설명입니다.
^M M으로 시작하는 줄, ^는 시작을 의미
M$ M으로 끝나는 줄, $는 끝을 의미
^[0-9] 숫자로 시작하는 줄, 문자는 []에 나열할 수 있습니다.
^[124ab] 1, 2, 4, a 또는 b로 시작하는 줄
^b.503 마침표 모든 문자를 나타냅니다.
* 별표는 그 이상을 나타냅니다. 0자 이상(없음일 수 있음)
+ 더하기 기호는 1자 이상을 의미합니다
. 슬래시는 특별한 의미를 제거할 수 있습니다.
cat passwd | grep ^s Account에 지원한 교환학생 목록보기
cat passwd | grep '^b.503' 전기공학과 성적보기 ...
grep '^.' myfile.txt 마침표로 시작하는 모든 줄 나열
개행 문자가 아닌 문자와 일치합니다. 예를 들어 'gr.p'는 gr 다음에 임의의 문자가 오는 것과 일치하고 그 다음 p와 일치합니다.
*
은 0개 이상의 이전 문자와 일치합니다. 예를 들어 '*grep'은 뒤에 grep이 오는 하나 이상의 공백이 있는 모든 줄과 일치합니다. .*를 함께 사용하면 모든 문자를 나타냅니다.
[]
은 지정된 범위 내의 문자와 일치합니다. 예를 들어 '[Gg]rep'는 Grep 및 grep과 일치합니다.
[^]
은 지정된 범위 내에 없는 문자와 일치합니다. 예: '[^A-FH-Z]rep'는 A-R 및 T-Z를 포함하지 않는 문자와 일치합니다. , 담당자 라인이 이어집니다.
(..)
은 '(love)'와 같이 일치하는 문자를 표시하고, love는 1로 표시합니다.
<
'
>와 같이 단어의 시작을 고정합니다.
'grep>과 같이 단어의 끝을 고정합니다. ;' 일치 항목에는 grep이라는 단어로 끝나는 줄이 포함되어 있습니다.
x{m}
문자를 x, m번 반복합니다. 예: '0{5}'은 5o가 포함된 행과 일치합니다.
x{m,}
x 문자를 m번 이상 반복합니다. 예: 'o{5,}'는 o가 5개 이상인 행과 일치합니다.
x{m,n}
문자 x를 최소 m번, 최대 n번 반복합니다. 예: 'o{5,10}'은 5-10과 일치합니다. 아 괜찮아.
w
는 텍스트와 숫자, 즉 [A-Za-z0-9]와 일치합니다. 예: 'Gw*p'는 G 뒤에 0개 이상의 텍스트 또는 숫자가 오는 것과 일치합니다. 문자, 그 다음 p.
W
점, 마침표 등 단어가 아닌 문자 하나 이상과 일치하는 w의 역형입니다.
b
'bgrepb'와 같은 단어 잠금 문자는 grep에만 일치합니다.
3. egrep 및 grep에 대한 메타문자 확장 세트 -E
+
는 하나 이상의 이전 문자와 일치합니다. 예: '[a-z]+able'은 loveable, 활성화, 비활성화 등과 같이 하나 이상의 소문자 뒤에 가능이 오는 문자열과 일치합니다.
?
은 0개 이상의 이전 문자와 일치합니다. 예를 들어, 'gr?p'는 gr 다음에 문자가 하나 또는 없거나 p가 오는 행과 일치합니다.
a|b|c
는 a, b 또는 c와 일치합니다. 예를 들어, grep|sed는 grep 또는 sed
()
와 일치합니다. 예: love(able|rs)ov+는 loveable 또는 Lovers와 일치하며 하나 이상의 ov와 일치합니다.
x{m},x{m,},x{m,n}
함수는 x{m},x{m,},x{m, n}
4. POSIX 문자 클래스
다른 국가의 문자 인코딩의 일관성을 유지하기 위해 POSIX(The Portable Operating System Interface)는 [:alnum: ]는 A입니다. Za-z0-9를 쓰는 또 다른 방법입니다. [A-Za-z0-9] 또는 [[:alnum:]]과 같은 정규 표현식이 되려면 [] 기호 안에 배치되어야 합니다. fgrep을 제외하고 Linux의 grep은 POSIX 문자 클래스를 지원합니다.
[:alnum:]
영숫자
[:alpha:]
리터럴 문자
[:digit: ]
숫자
[:graph:]
null이 아닌 문자(공백이 아닌, 제어 문자)
[:lower:]
소문자
[:cntrl:]
제어 문자
[:print:]
공백이 아닌 문자(공백 포함) )
[:punct:]
구두점
[:space:]
모든 공백 문자(새 줄, 공백, 탭)
[:upper:]
대문자
[:xdigit:]
16진수(0-9, a-f, A-F)
5. Grep 명령 옵션
-?
상하 일치하는 줄을 동시에 표시합니까? 예: grep -2 패턴 파일 이름은 일치하는 줄의 위쪽 줄과 아래쪽 줄을 동시에 표시합니다.
-b, --byte-offset
일치하는 라인을 인쇄하기 전에 해당 라인이 위치한 블록 번호를 인쇄하세요.
-c,--count
일치하는 줄 수만 출력하고 일치하는 내용은 표시하지 않습니다.
-f File, --file=File
파일에서 템플릿을 추출합니다. 빈 파일에는 0개의 템플릿이 포함되어 있으므로 일치하는 항목이 없습니다.
-h, --no-filename
여러 파일을 검색할 때 일치하는 파일 이름 접두사를 표시하지 않습니다.
-i, --ignore-case
대소문자 차이를 무시합니다.
-q, --quiet
표시를 취소하고 종료 상태만 반환합니다. 0은 일치하는 행이 발견되었음을 의미합니다.
-l, --files-with-matches
템플릿과 일치하는 파일 목록을 인쇄합니다.
-L, --files-without-match
템플릿과 일치하지 않는 파일 목록을 인쇄합니다.
-n, --line-number
일치하는 줄 앞에 줄 번호를 출력하세요.
-s, --silent
존재하지 않거나 읽을 수 없는 파일에 대한 오류 메시지를 표시하지 않습니다.
-v, --revert-match
역검색, 일치하지 않는 행만 표시합니다.
-w, --word-regexp
< 및 >로 인용된 경우 해당 표현식을 단어로 검색하세요.
-V, --version
소프트웨어 버전 정보를 표시합니다.
6. 예제
grep 도구를 잘 사용하려면 사실 정규식을 잘 작성해야 하므로 여기서는 grep의 모든 기능을 예제로 설명하지는 않겠습니다. 정규식을 작성하는 방법을 설명하는 몇 가지 예입니다.
$ ls -l | grep '^a'
파이프라인을 통해 ls -l의 출력을 필터링하고 a로 시작하는 줄만 표시합니다.
$ grep 'test' d*
d로 시작하는 파일에서 test를 포함하는 모든 줄을 표시합니다.
$ grep 'test' aa bb cc
aa, bb, cc 파일에서 test와 일치하는 행을 표시합니다.
$ grep '[a-z]{5}' aa
최소 5개의 연속된 소문자가 포함된 문자열을 포함하는 모든 줄을 표시합니다.
$ grep 'w(es)t.*1' aa
west가 일치하면 es가 메모리에 저장되고 1로 표시된 다음 원하는 수의 문자(.*)를 검색합니다. 이 문자 뒤에 또 다른 es(1)가 옵니다. . egrep 또는 grep -E를 사용하는 경우 "" 기호로 이스케이프할 필요가 없으며 'w(es)t.*1'로 직접 작성하면 됩니다.