Linux 명령 grep 소개

巴扎黑
巴扎黑원래의
2017-09-04 14:12:052329검색

1. 기능

Linux 시스템의 grep 명령은 정규식을 사용하여 텍스트를 검색하고 일치하는 줄을 인쇄할 수 있는 강력한 텍스트 검색 도구입니다. grep의 전체 이름은 Global Regular Expression Print이며, 이는 전역 정규식 버전이 모든 사용자에게 적용된다는 의미입니다.

2. 형식

grep [옵션]

3. 주요 매개변수

[옵션] 주요 매개변수:

-c: 일치하는 행의 개수만 출력합니다.

-I: 대소문자를 구분하지 않습니다(단일 문자에만 적용 가능).

-h: 여러 파일을 쿼리할 때 파일 이름을 표시하지 않습니다.

-l: 여러 파일을 쿼리할 때 일치하는 문자가 포함된 파일 이름만 출력됩니다.

-n: 일치하는 줄과 줄 번호를 표시합니다.

-s: 존재하지 않거나 일치하는 텍스트가 없는 오류 메시지를 표시하지 않습니다.

-v: 일치하는 텍스트가 포함되지 않은 모든 줄을 표시합니다.

패턴 정규식 주요 매개변수:

: 정규식에서 특수 문자의 원래 의미를 무시합니다.

^: 정규식의 시작 줄과 일치합니다.

$: 정규 표현식의 끝 줄과 일치합니다.

<: 정규식과 일치하는 줄부터 시작합니다.

>: 정규식과 일치하는 줄의 끝으로 이동합니다.

[ ]: [A]와 같은 단일 문자, 즉 A가 요구 사항을 충족합니다.

[-]: [A-Z]와 같은 범위, 즉 A, B, C ~ Z가 모두 요구 사항을 충족합니다.

. : 모든 단일 문자입니다.

*: 문자가 있으며, 길이는 0이 될 수 있습니다.

4. grep 명령을 사용한 간단한 예

$ 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'로 직접 작성하면 됩니다.

5.grep 명령 사용법의 복잡한 예

'/usr/src/Linux/Doc' 디렉토리에서 'magic' 문자열이 있는 파일을 검색한다고 가정합니다:

$ grep Magic /usr/src/Linux/ Doc/ *

sysrq.txt:* 마법의 SysRQ 키를 어떻게 활성화합니까?

sysrq.txt:* 마법의 SysRQ 키를 어떻게 사용합니까?

'sysrp.txt' 파일에 이 문자열이 포함되어 있습니다. 논의는 SysRQ의 기능입니다.

기본적으로 'grep'은 현재 디렉터리만 검색합니다. 이 디렉토리 아래에 하위 디렉토리가 많은 경우 'grep'은 다음과 같이 나열합니다.

grep: sound: Is a 디렉토리

이렇게 하면 'grep'의 출력을 읽기 어려울 수 있습니다. 여기에는 두 가지 해결 방법이 있습니다.

명시적으로 하위 디렉터리 검색을 요청: grep -r

또는 하위 디렉터리 무시: grep -d Skip

출력이 많으면 'less'로 파이프할 수 있습니다. 읽기:

$ grep Magic /usr/src/Linux/Documentation/* | less

이렇게 하면 더 편리하게 읽을 수 있습니다.

한 가지 주의할 점은 파일 필터링 방법을 제공해야 한다는 것입니다(모든 파일을 검색하려면 * 사용). 잊어버린 경우 'grep'은 프로그램이 중단될 때까지 기다립니다. 이 문제가 발생하면 를 누르고 다시 시도하세요.

아래에는 몇 가지 흥미로운 명령줄 매개변수가 있습니다.

grep -i 패턴 파일: 대소문자를 구분하지 않고 검색합니다. 기본값은 대소문자를 구분합니다.

grep -l 패턴 파일: 일치하는 파일 이름만 나열됩니다.

grep -L 패턴 파일: 일치하지 않는 파일 이름을 나열합니다.

grep -w 패턴 파일: 전체 단어만 일치합니다. 문자열의 일부보다(예: 'magic'이 아닌 'magic' 일치),

grep -C 숫자 패턴 파일: 일치하는 컨텍스트는 각각 [number] 줄을 표시합니다.

grep Pattern1 패턴2 파일: 패턴1과 일치하는 줄을 표시합니다. 또는 패턴2,

grep 패턴1 파일 | grep 패턴2: 패턴1과 패턴2 모두와 일치하는 행을 표시합니다.

grep -n 패턴 파일은 줄 번호 정보를 표시할 수 있습니다.

grep -c 패턴 파일은 총 줄 수를 찾을 수 있습니다.

검색을 위한 몇 가지 특수 기호도 있습니다.

< 단어의 끝 끝.

예:

grep man *은 'Batman', 'manic', 'man' 등과 일치합니다.

grep '

grep ''은 'man'과만 일치하며 'Batman' 또는 'manic'과 같은 다른 문자열은 일치하지 않습니다.

'^': 일치하는 문자열이 줄의 시작 부분에 있음을 의미합니다.

'$': 일치하는 문자열이 줄의 끝에 있음을 의미합니다.

Grep 명령 사용 가이드

1.

-I: 대소문자 무시

-c: 일치하는 줄 수 인쇄

-l: 여러 파일에서 일치하는 줄 찾기

-v: 일치하는 항목이 포함되지 않은 줄 찾기

-n: 줄 및 인쇄 일치하는 항목이 포함된 줄 레이블

2. RE(정규식)

정규식에서 특수 문자의 원래 의미를 무시합니다.

^ 정규식의 시작 줄과 일치합니다.

$ 정규식의 끝 줄과 일치합니다.

< 일치하는 정규 표현식에서 표현식 줄 시작

> 정규 표현식과 일치하는 줄 끝까지

[ ] [A]와 같은 단일 문자는 A가 요구 사항을 충족함을 의미합니다.

[ - ] 범위는 A, B, C를 의미합니다. Z는 모두 요구 사항을 충족합니다.

. 모든 단일 문자

* 모든 문자, 길이는 0

3일 수 있습니다. 예:

# ps -ef | grep in.telnetd

root 19955 181 0 13:43:53 ? 0:00 in.telnetd

# 더 많은 size.txt 크기 파일 내용

b124230

b034325

a081016

m7187998

m7282064

a0 22021

a061048

m9324822

b103303

a013386

b044525

m8987131

B081016

M45678

B103303

BADc2345

# more size.txt | grep '[a-b]' 범위(예: A, B, C) Z까지 모두 충족 요구 사항

b124230

b034 325

a081016

a022021

a061048

b103303

a013386

b044525

# 추가 size.txt | grep '[a-b]'*

b124230

b034325

a081016

m7187998

m7282064

a022021

a061048

m9324822

b103303

a013386

b044525

m8987131

B081016

M45678

B103303

BADc2345

# 더보기 size.txt | ' [A]와 같은 단일 문자, 즉 A는 요청과 일치합니다.

b034325

b103303

b044525

# more size.txt |

b034325

b103303

b044525

B081016

B103303

BADc2345

# grep 'root' /etc/group

root::0:root

bin::2:root,bin, 데몬

sys::3 :루트,bin,sys,adm

adm::4: 루트,adm,데몬

uucp::5:루트,uucp

mail::6:루트

tty::7:루트,tty,adm

lp::8:root,lp,adm

nuucp ::9:root,nuucp

daemon::12:root,daemon

# grep '^root' /etc/group은 정규식

root::0:root

# grep 'uucp ' /etc/group

uucp::5:root,uucp

nuucp::9:root,nuucp

# grep '

uucp::5:root,uucp

# grep 'root$' /etc/group은 정규 표현식의 끝 줄과 일치합니다.

root::0:root

mail::6:root

# 추가 size.txt | grep -i 'b1..*3 ' -i : 대소문자 무시

b124230

b103303

B103303

# 추가 size.txt | -v : 일치하는 항목이 포함되지 않은 줄 찾기

b034325

a0 81016

m7187998

m7282064

a022021

a061048

m9324 822

a013386

b044525

m8987131

B081016

M45678

BADc2345

# 추가 size.txt | grep -in 'b1..*3'

1:b124230

9:b103303

15:B103303

# grep '$' /etc/init.d/nfs.server | wc -l

128

# grep '$' /etc/ init.d/nfs.server | wc –l 정규식에서 특수 문자의 원래 의미를 무시합니다.

15

# grep '$' /etc /init.d/nfs.server

case "$1" in

>/tmp/sharetab.$$

[ "x$fstype" != xnfs ] &&

echo "$patht$rest$fstypet$ optst$desc"

>>/tmp/sharetab.$ $

/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$

/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab

if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)'

if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] &&

if [ $startnfsd -ne 0 ]; then

elif [ ! -n "$_INIT_RUN_LEVEL" ]; gt 0 ]; do

wtime=`expr $wtime - 1`

if [ $wtime -eq 0 ]; then

echo "사용법: $0 { start | stop }"

# 더 많은 size.txt

테스트 파일

그들은 파일입니다

# grep 'the' size.txt

테스트 파일

그들은 파일입니다

# grep 'the' size.txt

테스트 파일

their

# grep 'the>' size.txt

테스트 파일

# grep '' size.txt

# grep '<[Tt]he>' .txt

테스트 파일

====== =================================== =============== ===========

1,소개

정규식을 사용하는 다목적 텍스트 검색 도구입니다. 이 php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag"> 명령은 원래 ed 행 편집기 A에 있습니다. php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">명령/필터:

g/re/p -- 전역 - 정규식 - 인쇄 .

기본 형식

grep 패턴 [파일...]

(1)grep 검색 문자열 [파일 이름]

(2)grep 정규 표현식 [파일 이름]

파일에서 패턴의 모든 항목을 검색합니다. 패턴은 다음 중 하나일 수 있습니다. 검색할 문자열 또는 정규식

참고: 검색할 문자열을 입력할 때는 큰따옴표/를 사용하는 것이 가장 좋으며, 패턴 일치를 위해 정규식을 사용할 때는 작은따옴표를 사용하는 데 주의하세요

2, grep 옵션

-c는 일치하는 줄 수만 출력합니다.

-i는 대소문자를 구분하지 않습니다(단일 문자의 경우).

-n 일치하는 줄 번호를 표시합니다.

-v는 일치하는 줄을 표시하지 않습니다. 모든 텍스트 줄

- s는 오류 메시지를 표시하지 않습니다

-E는 확장 정규식을 사용합니다

더 많은 옵션을 보려면 다음을 참조하세요. man grep

3, 일반적으로 사용되는 grep 예제

(1) 여러 파일 쿼리

grep "sort" *.doc # 파일 이름 일치 보기

(2) 줄 일치: 일치하는 줄 수 출력

grep -c "48" data.doc # 문서에서 48자를 포함하는 줄 수 출력

(3) 일치하는 줄 표시 및 줄 번호

grep -n "48" data.doc # 48과 일치하는 모든 줄과 줄 번호 표시

(4) 일치하지 않는 줄 표시

grep -vn "48" doc # 일치하는 모든 줄을 출력합니다. not contain 48

(4) 일치하지 않는 행 표시

grep -vn "48" data.doc # 48

(5) 대소문자 구분

grep - i "ab" 데이터를 포함하지 않는 모든 행을 출력합니다. doc #ab 또는 Ab 문자열을 포함하는 모든 줄을 출력

4, 정규식 적용

(1) 정규식 적용 (참고: 괄호로 묶인 정규식에는 작은따옴표를 사용하는 것이 가장 좋습니다)

grep '[239] .' data.doc # 2, 3 또는 9로 시작하고 두 개의 숫자인 모든 행을 출력합니다

(2) 불일치 테스트

grep '^[^ 48]' data.doc # 첫 번째 행이 다음과 같은 행과 일치하지 않음 48

(3) 확장 패턴 매칭 사용

grep -E '219|216' data.doc

(4) ...

이 내용이 필요합니다. 지속적으로 실습에 적용하고 요약하며 정규식을 능숙하게 마스터하세요. .

5, 클래스 이름 사용

국제 패턴 일치를 위해 클래스 이름을 사용할 수 있습니다:

[[:upper:]] [A-Z]

[[:lower:]] [a-z]

[[:digit :] ] [0-9]

[[:alnum:]] [0-9a-zA-Z]

[[:space:]] 공백 또는 탭

[[:alpha:]] [a- zA- Z]

(1)

grep '5[[:upper:]][[:upper:]]' data.doc 사용 #5로 시작하고 두 개의 대문자로 끝나는 줄을 쿼리

위 내용은 Linux 명령 grep 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.