일반 리눅스 / 확장 표현 중 (그렙 기사)

우리가 사용하는 표현의 일부를 정렬 할 수 있습니다 있도록 정규 표현식은 쉘 스크립트의 능력을 향상하기 위해, 우리는 종종 때 정규 표현식을 사용하는 리눅스 쉘 스크립트에서 사용하는

첫째, 정규 표현식 (1)
명령을 그렙 정규 표현식의 연습을 통해
BBB의 필드에 우리와 함께 라인 필터와 같은, 당신은 "XX"파일 그렙을 통해 얻을 직접 갈 수 있습니다

[root@zhaocheng ~]# cat test1
aaa bbb ooo
cccc dddd eeee
fffff ggggg hhhhh bbbbb
kkkkk pppppp ssssss xxxxxx   mmmmmmmm
[root@zhaocheng ~]# grep "bbb" test1
aaa bbb ooo
fffff ggggg hhhhh bbbbb

예를 들어, AAA로 시작하는 라인 걸러, 우리는 ^ ^ 고정 라인의 시작 나타낸다 일치 사용해야
따옴표없이 첨가 될 수있다

[root@zhaocheng ~]# grep "^aaa" test1
aaa bbb ooo
[root@zhaocheng ~]# grep '^aaa' test1
aaa bbb ooo
[root@zhaocheng ~]# grep ^aaa test1
aaa bbb ooo

^ 매치는 라인의 시작과 라인의 $ 일치 끝, 따옴표를 추가 할 수 없습니다, 시도 할 수 있습니다

[root@zhaocheng ~]# grep mm$ test1
kkkkk pppppp ssssss xxxxxx   mmmmmmmm
[root@zhaocheng ~]# grep 'mm$' test1
kkkkk pppppp ssssss xxxxxx   mmmmmmmm
[root@zhaocheng ~]# grep "mm$" test1
kkkkk pppppp ssssss xxxxxx   mmmmmmmm

컬러 색상 - 예를 들어, 단어를 일치 직접 ^ XX $ 선, GREP -n 방식으로 출력 라인 수의 라인 끝의 시작과 일치를 사용할 수 있습니다

[root@zhaocheng ~]# grep ^today$ test1
today

[root@zhaocheng ~]# grep -n --color ^today$ test1
1:today
[root@zhaocheng ~]# grep -n  ^today$ test1
1:today

그래서 ^ $ 빈 라인과 일치하는 빈 광고 수단이며, 네 번째 행은 일치 할 수 $ ^을 이용하여, 공간을 출력

[root@zhaocheng ~]# grep ^$ test1

[root@zhaocheng ~]# grep -n ^$ test1
4:

그렙에서 단어 나 접미사의 첫 번째 단어에 맞게

[root@zhaocheng ~]# grep "\<Beijing" test1
Beijing
[root@zhaocheng ~]# grep "beijinG\>" test1
beijinG
[root@zhaocheng ~]# grep "\<B" test1
Beijing
[root@zhaocheng ~]# grep "G\>" test1
beijinG

그것은 첫 번째 단어 엔딩으로 고정 할 수 있습니다

[root@zhaocheng ~]# grep -n --color "\<beijin\>" test1
6:Beijing is beijin ya

\ 이외에도 <또한 \ B를 사용할 수있는 고정 제 워드는 또한 제 단어를 제공 할 수있다
또한 \ B를 사용하여 고정 접미사 접미사를 고정 할 수 \ 이외에>

[root@zhaocheng ~]# grep -n --color "\bccc" test1
5:cccc dddd eeee

[root@zhaocheng ~]# grep -n --color "eee\b" test1
5:cccc dddd eeee

[root@zhaocheng ~]# grep -n --color "\beeee\b" test1
5:cccc dddd eeee

이 B와 동생 B는이 경기 "비 단어 경계"에 속하는
경기 자본에 첫 번째 단어를 제외하고 경기 BB 최초의 BB 때 볼 수 있습니다
뿐만 아니라 첫 번째 단어의 시작 부분 일치 BBB 다음 매칭 다른 사람이 일치한다

[root@zhaocheng ~]# grep -n --color "\Bbb" test1
2:aaa bbb ooo
7:fffff ggggg hhhhh bbbbb
[root@zhaocheng ~]# grep -n --color "\Bbbb" test1
7:fffff ggggg hhhhh bbbbb

요약 :
^이 : 일치하기 위해, 처음에 표시해야하는 내용 단어 문자 뒤에 먼저 고정 회선을 나타내는
$ : 일치하기 위해 마지막에 내용이 나타납니다해야합니다 모든 단어 문자의 앞에, 라인의 고정 단을 대표하는
^ $가 매치 빈 라인을 나타냅니다 빈 라인, 스페이스 또는 탭의 Enter 나타내고 본원에 기술되고, 공백 라인은 본원에 기재된 바와 같이 그렇게 간주 될 수
^ ABC의 $ : ABC의 일치 될 때 독점적 라인 나타내는
매치 : \ <또는 \ B 단어 경계는 문자가 헤더 단어로 사용되어야합니다 뒤에, 먼저 고정 기간을 나타냅니다 나타납니다
\> 또는 \ B : 단어 경계를 일치, 고정 된 끝의 선행 문자가 단어 꼬리로 표시해야한다 나타내는
\ B : 일치하는 단어가 아닌 경계와 \ 대신 B

둘째, 정규 표현식 (2)
두 개의 연속 된 문자 이미지가 포함 된 텍스트 몇 줄의 어느 알아보십시오
YAML을 가지고 같은 단어를 이미지 파일로 시작하는 알

[root@zhaocheng files]# grep -n "image" coredns.yaml 
111:        image: zhaocheng172/coredns:1.2.2
112:        imagePullPolicy: IfNotPresent

당신은 텍스트의 단어를 많이 가지고 있지만 같은 필드에 단어를 일치 시키려면 두 개의 연속 포함

[root@zhaocheng ~]# grep -n "b\{2\}" test3
4:bb
6:bbb

[root@zhaocheng ~]# grep -n "a\{2\}"  test3
1:aa
3:aaa a a aa
8:aaiip
9:aallo aahuy


일반 기호 번호가 일치 할 때 우리는 종종 모든 문자를 일치시키는 데 사용,
길이 일치의 모든 문자를 표현
하지만, 정규 표현식, 문자 연속 전에 어떠한 번호 (0 포함) 대표
등 매칭 A를
의 p도를 A는 언제라도 발생할 수 있지만, 페이지와 함께 따라야합니다입니다

[root@zhaocheng ~]# grep -n "a*p" test3
7:appaly aoopa
8:aaiip

* 일치 오 이다, 오 후 모든 문자 **

[root@zhaocheng ~]# grep -n --color "o*" test2
1:aaa#bbb#ooo
2:cccc#dddd#eeee
3:fffff#ggggg#hhhhh
4:kkkkk#pppppp#ssssss

와일드 카드에서 길이 문자를 나타내고, 정규 표현식에. 일치 시키려면

[root@zhaocheng ~]# grep -n --color "o.*" test1
1:today
2:aaa bbb ooo

하나는 어떤 문자를 표시 한 후 정규 표현식, 두 문자는 .. 일치한다

[root@zhaocheng ~]# grep -n "y." test
6:sync:x:5:0:sync:/sbin:/bin/sync
[root@zhaocheng ~]# grep -n "y.." test
6:sync:x:5:0:sync:/sbin:/bin/sync
[root@zhaocheng ~]# grep -n "y..." test
6:sync:x:5:0:sync:/sbin:/bin/sync

셋째, 일반 식 (3)는 일반적인 기호
[: 알파 :] 어떤 알파벳의 모든 문자와 일치

[root@zhaocheng ~]# grep "[[:alpha:]]" test4
a
a9o
afghj9gh
abcd
aBDc
abdD
a124
a1a4
a%

즉, 기본값 편지의 추가와 함께

[root@zhaocheng ~]# grep "a[[:alpha:]]" test4
afghj9gh
abcd
aBDc
abdD

그것은 후방 세 글자와 일치

[root@zhaocheng ~]# grep "a[[:alpha:]]\{3\}" test4
afghj9gh
abcd
aBDc
abdD

후방 두 글자와 일치

[root@zhaocheng ~]# grep "a[[:alpha:]]\{2\}" test4
afghj9gh
abcd
aBDc
abdD

예를 들어, 세 문자는 소문자 여야, 다음,
당신이 사용할 수있는 [[: 낮은 :]]는 소문자 문자를 나타냅니다

[root@zhaocheng ~]# grep "a[[:lower:]]" test4
afghj9gh
abcd
abdD
[root@zhaocheng ~]# grep "a[[:lower:]]\{2\}" test4
afghj9gh
abcd
abdD


모든 대문자 문자를 나타내는 데 사용할 수 있습니다

[[:upper:]]

[root@zhaocheng ~]# grep "a[[:upper:]]\{1\}" test4
aBDc
[root@zhaocheng ~]# grep "a[[:upper:]]\{2\}" test4
aBDc

공통 기호를
[[: 알파 :]]는 소문자 나타내는
모든 소문자 문자를 나타냅니다 [이 : 낮은] []
[[: upper :]]는 모든 대문자를 나타낸다
[[: digit :]]이 0-9를 나타냅니다를 (0을 포함 9). 단일 번호
[: alnum :]는 숫자 나 문자를 나타내는
[: 공간 :] 공백 포함 공백 문자를 나타내고, 탭 킨
[: PUNCT :] 임의의 문장을 나타내고

소문자를 나타낼 수 있고, 다른 하나는 "[AZ]"의 어느 하나 소문자 문자를 의미 할 수있다, [: 하부 :] 및 [아리조나]은 동일하다 [] : 하한 []에 더하여

[root@zhaocheng ~]# grep "[a-z]" test4
a
a9o
afghj9gh
abcd
aBDc
abdD
a124
a1a4
a%
[root@zhaocheng ~]# grep "[[:lower:]]" test4
a
a9o
afghj9gh
abcd
aBDc
abdD
a124
a1a4
a%

마찬가지로 대문자 [AZ]는 및 [: 상부 :]은 동일

[root@zhaocheng ~]# grep "[A-Z]" test4
aBDc
abdD
[root@zhaocheng ~]# grep "[[:upper:]]" test4
aBDc
abdD


두 편지 문자 후 필터링하는 두 가지 방법이 있습니다
[[: 낮은 :]] 소문자
[[: upper :]]는 대문자

[root@zhaocheng ~]# grep "a[a-z]\{2\}" test4
afghj9gh
abcd
apooo
aiuhh
abdD
[root@zhaocheng ~]# grep "a[[:lower:]]\{2\}" test4
afghj9gh
abcd
apooo
aiuhh
abdD
[root@zhaocheng ~]# grep "a[A-Z]\{2\}" test4
aBDc
[root@zhaocheng ~]# grep "a[[:upper:]]\{2\}" test4
aBDc

이를 [A-ZA-Z]과 동일한 의미 캐릭터 [: 알파] []의 임의 인도있다

[root@zhaocheng ~]# grep "[[:alpha:]]" test4
a
a9o
afghj9gh
abcd
apooo
aiuhh
aBDc
abdD
a124
a1a4
a%
[root@zhaocheng ~]# grep "[a-zA-Z]" test4
a
a9o
afghj9gh
abcd
apooo
aiuhh
aBDc
abdD
a124
a1a4
a%


마찬가지로 [0-9] 및 [: 자리 :] 당량은 0-9 사이의 하나의 숫자를 나타낸다

[root@zhaocheng ~]# grep "[[:digit:]]" test4
a9o
afghj9gh
a124
a1a4
[root@zhaocheng ~]# grep "[0-9]" test4
a9o
afghj9gh
a124
a1a4


중간 [AZ] 모든 소문자 문자이며, 관련 문자를 일치시킬 수 있습니다

[root@zhaocheng ~]# grep "b[ad]" test5
ba
bd

또한 특수 문자를 일치시킬 수 있습니다, []는 경기에 지정된 범위 내에서 임의의 한 문자를 나타냅니다

[root@zhaocheng ~]# grep "b[cP@*&]" test5
bc
bP
b&
b*
b@

이러한 필터 문자 기호에 추가

[root@zhaocheng ~]# grep "b[^cP@*&]" test5
ba
bd
bf
bg

사용 [^ AZ]이 문자에서 제외

[root@zhaocheng ~]# grep "b[^A-Z]" test5
ba
bc
bd
bf
bg
b&
b*
b@
[root@zhaocheng ~]# grep "b[^a-z]" test5
bP
b&
b*
b@

마찬가지로
단일 문자 [^ AZ]이고 비 소문자 글자에 매칭 될 수있다
[^ AZ] 논 대문자 단일 문자에 일치 될 수있다 나타내는
하나에 일치 될 수있다 [^ A-ZA-Z]는 비영 숫자 문자를 나타내는 예컨대, 숫자 또는 기호
[^ A-ZA-Z0-9]가 아닌 숫자를 나타내고,는 하나의 비 문자 숫자와 같은 기호로, 일치 할

인터뷰 이전 [아리조나] 및 [: 하향 :] ^ 다음 당량에 상당

[root@zhaocheng ~]# grep "b[^[:lower:]]" test5
bP
b&
b*
b@

즉 [^ 0-9] 및 [^ [: 자리 :] 당량
[^ AZ]는 및 [^ [:] 당량 낮출
] 당량 [^ AZ]와 [^ [: 상부
^ [ A-ZA-Z]와 [^ [: 알파 :] 당량
[^ A-ZA-Z0-9]와 [^ [: alnum :] 당량

숫자를 나타낼 수 있으나, 또한 사용될 수있다 \ 번호를 나타내는 d는 [0-9], [: 자리] []이 외에도

[root@zhaocheng ~]# grep -P "b\d" test5
b3
b4
b5


단일 숫자가 아닌 문자를 표시

[root@zhaocheng ~]# grep -P "b\D" test5
ba
bc
bd
bf
bg
bP
b&
b*
b@

\ D는 단일 0-9 나타내는
\ D는 단일 숫자 이외의 문자를 나타내는
\ t 나타낸다 번의 매치 수평 탭 (TAB 건강한 상당)
\ S 등 공백, 탭, 탭을 포함하는 공백 문자와 일치 나타낸다
\ S는 일치 하나의 공백이 아닌 문자를 나타냅니다

넷째, 정규 표현식은 탈출

공통 기호 "\"문자를 이스케이프
우리는 긍정적를 사용하기 전에이 경기 뒤에 어떤 문자를 나타냅니다,하지만 당신은 텍스트의이 지점이있는 경우, 직접 일치, 우리는 이스케이프 문자를 사용해야 할 경우, 다른 일치합니다 \ 일치하는

[root@zhaocheng ~]# grep "a.." test4
a9o
afghj9gh
abcd
apooo
aiuhh
aBDc
abdD
a124
a1a4
a..

[root@zhaocheng ~]# grep "a\.\." test4
a..

백 슬래시 자체를 일치시킬 경우에,
당신은 '사용'에 맞게 작은 따옴표를, '\'가 일치하는

[root@zhaocheng ~]# grep 'a\\' test4
a\\\
[root@zhaocheng ~]# grep 'a\\\\' test4
a\\\
[root@zhaocheng ~]# grep 'a\\\\\\' test4
a\\\

다섯, 정규 표현식 요약

################# ################# 일반적으로 사용되는 기호
. 단일 문자를 나타냅니다.

  • 나타냅니다 연속 앞의 문자 0을 포함 여러 번, 그.
    . 길이의 모든 문자, 와일드 카드 나타냅니다 같은 의미를.
    정규식 심볼과 결합 될 때, 기호 자체를 나타내는 이스케이프 시퀀스를 나타내는 \.
    []는 하나의 문자가 지정된 범위와 일치 나타낸다.
    [^] 지정한 범위에있는 단일 문자 매치를 나타낸다.

################# ################# 연관된 단일 문자와 일치한다
[: 알파 :] 모든 소문자가를 나타낸다 .
[: 하향 :]는 소문자를 나타낸다.
[[: 상단 :]]는 모든 대문자를 나타냅니다.
[: 자리 :] (0-9 포함) 0과 9 사이의 단일 숫자를 나타낸다.
[[: alnum :]]은 숫자 또는 문자를 나타냅니다.
[[: 공간 :]]는 "빈", 등등 "탭 키"를 포함한 모든 공백 문자를 나타냅니다.
[: PUNCT :]는 문장 부호를 나타낸다.
[^ [: 알파 :]은 하나의 비 - 알파벳 문자를 나타낸다.
[^ [: 하향 :]는 단일 비 - 소 문자를 나타낸다.
[^ [: 상부 :] 단일 비 대문자 알파벳 캐릭터를 나타낸다.
[^ [: 자리 :]은 하나의 숫자가 아닌 문자를 나타낸다.
[^ [: alnum :]은 하나의 숫자가 아닌 비 - 알파벳 문자를 나타낸다.
[^ [: 공간 :] 하나의 비 공백 문자를 나타낸다.
[^ [: PUNCT :] 번의 비 구두점 문자를 나타낸다.
[0-9] 및 [: 자리 :] 등가.
[AZ] 및 [: 하향 :] 등가.
[AZ] 및 [:] : 상부] 등가.
[A-ZA-Z] 및 [: 알파 :] 등가.
[A-ZA-Z0-9] 및 [: alnum :] 등가.
[^ 0-9] 및 [^ [: 자리 :] 등가.
[^ AZ]와 [^ [: 하향 :] 등가.
[^ AZ]와 [^ [: 상부 :] 당량
[^ A-ZA-Z]와 [^ [: 알파 :] 당량
[^ A-ZA-Z0-9]와 [^ [: alnum :]] 상당
# 짧은 형식은 모든 정규 표현식 파서 식별 할 수 없습니다.
\ D는 단일 숫자를 0-9를 나타낸다.
\ D는 단일 숫자가 아닌 문자를 나타냅니다.
\ t 나타낸다 번의 매치 수평 탭 (a tab 키의 등가물).
\의 표시는 "공간", "탭 탭"등을 포함한 공백 문자와 일치합니다.
\ S는 일치 하나의 공백이 아닌 문자를 나타냅니다.

################# ################# 일치의 수와 관련
\? 수단은 앞의 문자와 일치에 0 또는 1
+ 그것은 적어도 한 번 또는 반복하여 전방 일치하는 문자를 나타내고, 연속 수는 캡핑되지.
{N}은 연속 문자 n 번이 일치된다는 것을 나타냅니다.
{X는 Y가}만큼 X와 Y 사이에서 이전의 연속적인 문자의 수가, 일치 할 수 있으며, 바꾸어 말하면,이 매칭 될 수 있으며, 최대 Y 회 연속으로 상기 적어도 X 회 연속 전 문자를 나타내는 에.
{N} 일치 동반, 최소 0, 대부분의 n 번에서 이전의 연속 된 문자를 나타냅니다.
{N} 적어도 n 번에, 그것은 일치한다 이전의 연속 된 문자를 나타냅니다.

################# 경계 관련의 위치와 일치 #################
^ 것은 :이 문자 뒤에, 라인의 앵커를 나타냅니다 내용의 일치하기 위해, 처음에 나타나야합니다.
$ : 일치 끝에이 문자해야에 나타납니다 어떤 내용의 앞 라인의 앵커 끝을 나타냅니다.
^ $ : 나타냅니다 매치 빈 라인, 빈 줄이 여기에 설명 나타내는 "입력"및 "공간"또는 "탭"과 빈 줄은 여기에 설명 된 정도로 계산 될 수 없다.
^ ABC의 $ : ABC는 별도의 줄에 말했다, 그것은 일치됩니다.
\ <또는 \ B : 단어 경계를 일치, 그것은 최초의 앵커 단어를 나타내며, 문자는 단어의 첫 등장으로 그 뒤에 있어야합니다.
\> 또는 \ B : 단어 경계와 일치하는 단어의 꼬리로 나타나야 그 앞의 문자를 끝 앵커를 나타냅니다.
\ B : 비 매칭 단어 경계 및 \ B 정반대.

################# ################# 그룹핑 및 역방향 참조
패킷 ()이고, 내용이있는 우리가 될 수 전반적으로, 패킷은 중첩 될 수 있습니다.
(AB)는이 다루는 전체 AB 것이라고 말했다.
\ 1 식을 도시하면 긍정적 인 결과에 매칭 전체 첫 번째 패킷을 지칭한다.
\ 2 발현은 보통 매칭 결과로 전체 2 패킷을 지칭 나타낸다.

[root@zhaocheng ~]# cat shengri.txt 
小卡  19901119
小红  19920105
小里  19930211
小会  19940325
小黑  19950418
匹配1993开头的
[root@zhaocheng ~]# grep "\b1993[0-9]\{4\}\b" shengri.txt 
小里  19930211

여기서 수단 \ <1992 \ b1992 즉 먼저 고정되고, [: 자리 :] 및 [0-9] 숫자를 나타낼 수있는 문자의 {4} 후단 4 \> \ B가 고정 접

[root@zhaocheng ~]# grep "\<1992[[:digit:]]\{4\}\>" shengri.txt 
小红  19920105
[root@zhaocheng ~]# grep "\<1992[[:digit:]]\{4\}\b" shengri.txt 
小红  19920105
[root@zhaocheng ~]# grep "\b1992[[:digit:]]\{4\}\b" shengri.txt 
小红  19920105
[root@zhaocheng ~]# grep "\b1992[[:digit:]]\{4\}\>" shengri.txt 
小红  19920105

여섯째, 확장 된 정규 표현식

여부는 기본 정규식 또는 확장 정규 표현식에서, 의미는 몇 가지 일반적인 문자가 같은 표현
. 단일 문자를 나타냅니다.

  • 나타냅니다 연속 앞의 문자 0을 포함 여러 번, 그.
    . 길이의 모든 문자, 와일드 카드 나타냅니다 같은 의미를.
    정규식 심볼과 결합 될 때, 기호 자체를 나타내는 이스케이프 시퀀스를 나타내는 \.
    []는 하나의 문자가 지정된 범위와 일치 나타낸다.
    [^] 지정한 범위에있는 단일 문자 매치를 나타낸다.

[: 알파 :]는 소문자를 나타낸다.
[: 하향 :]는 소문자를 나타낸다.
[[: 상단 :]]는 모든 대문자를 나타냅니다.
[: 자리 :] (0-9 포함) 0과 9 사이의 단일 숫자를 나타낸다.
[[: alnum :]]은 숫자 또는 문자를 나타냅니다.
[[: 공간 :]]는 "빈", 등등 "탭 키"를 포함한 모든 공백 문자를 나타냅니다.
[: PUNCT :]는 문장 부호를 나타낸다.
[^ [: 알파 :]은 하나의 비 - 알파벳 문자를 나타낸다.
[^ [: 하향 :]는 단일 비 - 소 문자를 나타낸다.
[^ [: 상부 :] 단일 비 대문자 알파벳 캐릭터를 나타낸다.
[^ [: 자리 :]은 하나의 숫자가 아닌 문자를 나타낸다.
[^ [: alnum :]은 하나의 숫자가 아닌 비 - 알파벳 문자를 나타낸다.
[^ [: 공간 :] 하나의 비 공백 문자를 나타낸다.
[^ [: PUNCT :] 번의 비 구두점 문자를 나타낸다.
[0-9] 및 [: 자리 :] 등가.
[AZ] 및 [: 하향 :] 등가.
[AZ] 및 [:] : 상부] 등가.
[A-ZA-Z] 및 [: 알파 :] 등가.
[A-ZA-Z0-9] 및 [: alnum :] 등가.
[^ 0-9] 및 [^ [: 자리 :] 등가.
[^ AZ]와 [^ [: 하향 :] 등가.
[^ AZ]와 [^ [: 상부 :] 당량
[^ A-ZA-Z]와 [^ [: 알파 :] 상당
[^ A-ZA-Z0-9]와 [^ [: alnum :] 상당

^ :이 문자의 내용이 일치하기 위해, 처음에 나타나야합니다 뒤에, 라인의 앵커를 나타냅니다.
$ : 일치 끝에이 문자해야에 나타납니다 어떤 내용의 앞 라인의 앵커 끝을 나타냅니다.
^ $ : 나타냅니다 매치 빈 라인, 빈 줄이 여기에 설명 나타내는 "입력"및 "공간"또는 "탭"과 빈 줄은 여기에 설명 된 정도로 계산 될 수 없다.
^ ABC의 $ : ABC는 별도의 줄에 말했다, 그것은 일치됩니다.
\ <또는 \ B : 단어 경계를 일치, 그것은 최초의 앵커 단어를 나타내며, 문자는 단어의 첫 등장으로 그 뒤에 있어야합니다.
\> 또는 \ B : 단어 경계와 일치하는 단어의 꼬리로 나타나야 그 앞의 문자를 끝 앵커를 나타냅니다.
\ B : 비 매칭 단어 경계 및 \ B 정반대.

당신이 확장 정규 표현식을 지원하려면 기본적으로 grep 명령은 기본 정규 표현식, 그렙을 지원 효과를 볼 수, 당신은 -E 옵션을 사용할 필요가 있지만, 이들 중 70 %는 일반적인 상징

[root@zhaocheng ~]# grep "b[a-z]" test5
ba
bc
bd
[root@zhaocheng ~]# egrep "b[a-z]" test5
ba
bc
bd
[root@zhaocheng ~]# grep -E "b[a-z]" test5
ba
bc
bd

추가의 실질적으로 정규 표현식, 약간 상이한 다수 있지만, 더 나은 것을 알 정규보다 외모에 비해 30 %
{N} 내의 양 식 연속 이전 문자 n 번이고, 일치한다
확장 정규 표현은, {N}는 문자 N 회 연속이 일치된다는 것을 나타냅니다

기본 정규 표현식 () 패킷을 의미에서, (AB)는이 다루는 전체 AB 것이라고 말했다
(), 확장 된 정규 표현식 패킷 (AB)가이 다루는 전체 AB을 것이라고 말했다 의미

확장 정규 표현식 :
() 패킷 나타내고
에 전체 프로그램과 같은 프로세스 (AB) AB를
양성 발현 전체 첫번째 패킷이 결과 일치 지칭 도시 \ 1
\ 2 전체 기준의 발현을 나타낸다 두 그룹은 일반 결과와 일치
? 이는 전방 정합 문자 0 또는 1

  • 전방 일치하는 문자가 적어도 한번 또는 반복적으로 나타내고, 캡핑되지 연속 수가
    {N}는 그 연속 문자 n 회를 나타내고 일치한다
    {X, Y}은 적어도 연속 된 문자 X 시간 전에 나타낸다 , Y 연속 시간은 기껏 일치시킬 수
    0 적어도 일치한다, 가장 n 배의 이전 연속 된 문자를 나타내는 {N}
    n 번 이상에 일치하게 될 때까지 {N}가 연속 된 문자를 나타내는

"|"확장 된 표현으로, 그것이 좀 더 일반적으로 사용되는 기호는 기본 정규식이 아닌되어있다

뜻 표현하거나

[root@zhaocheng ~]# cat test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
dubbo.edu
spring cloud.net
helm.org

닷넷 줄 끝에 결말이었다 무엇 $ XXX 알아 보려면

[root@zhaocheng ~]# grep "net$" test6
spring cloud.net
[root@zhaocheng ~]# egrep "net$" test6
spring cloud.net
[root@zhaocheng ~]# grep -E "net$" test6
spring cloud.net

"|"예를 들어, 당신이 사용할 수있는 줄의 끝처럼 COM, 그물을 찾으려면, 당신은 egrep을 사용하거나 그렙 -E () 전체 괄호의 내용을 나타냅니다,


[root@zhaocheng ~]# egrep "(com|net)$" test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
spring cloud.net
[root@zhaocheng ~]# grep -E "(com|net)$" test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
spring cloud.net

당신은 쓰기도 할 수 있지만 | $ 정확한 (COM 순), $이 무엇 끝입니다

[root@zhaocheng ~]# grep -E "com|net" test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
spring cloud.net

일반적인 표현의 요약 확장
일반적으로 사용되는 문자
. 모든 단일 문자를 나타냅니다.

  • 나타냅니다 연속 앞의 문자 0을 포함 여러 번, 그.
    . 길이의 모든 문자, 와일드 카드 나타냅니다 같은 의미를.
    정규식 심볼과 결합 될 때, 기호 자체를 나타내는 이스케이프 시퀀스를 나타내는 \.
    | 수단는 "또는"을 의미
    에 맞게 지정된 범위 내에서 임의의 한 문자는] [나타냅니다.
    [^] 지정한 범위에있는 단일 문자 매치를 나타낸다.

그것은 관련된 하나의 문자와 일치하는
임의의 경우 문자를 나타내는 [: 알파] []를.
[: 하향 :]는 소문자를 나타낸다.
[[: 상단 :]]는 모든 대문자를 나타냅니다.
[: 자리 :] (0-9 포함) 0과 9 사이의 단일 숫자를 나타낸다.
[[: alnum :]]은 숫자 또는 문자를 나타냅니다.
[[: 공간 :]]는 "빈", 등등 "탭 키"를 포함한 모든 공백 문자를 나타냅니다.
[: PUNCT :]는 문장 부호를 나타낸다.
[^ [: 알파 :]은 하나의 비 - 알파벳 문자를 나타낸다.
[^ [: 하향 :]는 단일 비 - 소 문자를 나타낸다.
[^ [: 상부 :] 단일 비 대문자 알파벳 캐릭터를 나타낸다.
[^ [: 자리 :]은 하나의 숫자가 아닌 문자를 나타낸다.
[^ [: alnum :]은 하나의 숫자가 아닌 비 - 알파벳 문자를 나타낸다.
[^ [: 공간 :] 하나의 비 공백 문자를 나타낸다.
[^ [: PUNCT :] 번의 비 구두점 문자를 나타낸다.
[0-9] 및 [: 자리 :] 등가.
[AZ] 및 [: 하향 :] 등가.
[AZ] 및 [:] : 상부] 등가.
[A-ZA-Z] 및 [: 알파 :] 등가.
[A-ZA-Z0-9] 및 [: alnum :] 등가.
[^ 0-9] 및 [^ [: 자리 :] 등가.
[^ AZ]와 [^ [: 하향 :] 등가.
[^ AZ]와 [^ [: 상부 :] 상당
[^ A-ZA-Z]와 [^ [: 알파 :] 당량
[^ A-ZA-Z0-9]와 [^ [: alnum :] 상당

관련 일치의 수는
? 수단은 앞의 문자 0 또는 1 시간에 맞게

  • 그것은 적어도 한 번 또는 반복하여 전방 일치하는 문자를 나타내고, 연속 수는 캡핑되지.
    {N}은 연속 문자 n 번이 일치된다는 것을 나타냅니다.
    {X는 Y가}만큼 X와 Y 사이에서 이전의 연속적인 문자의 수가, 일치 할 수 있으며, 바꾸어 말하면,이 매칭 될 수 있으며, 최대 Y 회 연속으로 상기 적어도 X 회 연속 전 문자를 나타내는 에.
    {N} 일치 동반, 최소 0, 대부분의 n 번에서 이전의 연속 된 문자를 나타냅니다.
    {N} 적어도 n 번에, 그것은 일치한다 이전의 연속 된 문자를 나타냅니다.

관련 경계의 위치 일치
^을 : 라인의 앵커를 표시,이 문자의 내용이 일치하기 위해, 처음에 나타나야합니다 뒤에.
$ : 일치 끝에이 문자해야에 나타납니다 어떤 내용의 앞 라인의 앵커 끝을 나타냅니다.
^ $ : 나타냅니다 매치 빈 라인, 빈 줄이 여기에 설명 나타내는 "입력"및 "공간"또는 "탭"과 빈 줄은 여기에 설명 된 정도로 계산 될 수 없다.
^ ABC의 $ : ABC는 별도의 줄에 말했다, 그것은 일치됩니다.
\ <또는 \ B : 단어 경계를 일치, 그것은 최초의 앵커 단어를 나타내며, 문자는 단어의 첫 등장으로 그 뒤에 있어야합니다.
\> 또는 \ B : 단어 경계와 일치하는 단어의 꼬리로 나타나야 그 앞의 문자를 끝 앵커를 나타냅니다.
\ B : 비 매칭 단어 경계 및 \ B 정반대.

그룹화 및 역방향 참조
패킷 (), 우리는 전체 그룹이 중첩 될 수있는 수의 내용을 나타낸다.
(AB)는이 다루는 전체 AB 것이라고 말했다.
\ 1 식을 도시하면 긍정적 인 결과에 매칭 전체 첫 번째 패킷을 지칭한다.
\ 2 발현은 보통 매칭 결과로 전체 2 패킷을 지칭 나타낸다.

추천

출처blog.51cto.com/14143894/2473712