grep命令 正規表示式

2021-08-21 06:07:14 字數 3014 閱讀 4666

linux系統中grep是一種強大的文字搜尋工具,按照關鍵字或正規表示式過濾文字,並把匹配的行列印出來。grep的全稱是global regular expression print,表示的是全域性正規表示式版本,使用許可權時所有使用者。

-e:在擴充套件正則模式下

-p:在perl正則模式下

-v:將不匹配的過濾出來

-r/-r:遞迴查詢

-q:安靜模式,不在螢幕上輸出

-i:忽略大小寫

-n:增加行號

-o:只輸出檔案中匹配到的部分

正規表示式是用於描述一組字串特徵的模式,用來匹配特定的字串。通過字串+普通字元來進行模式描述,從而達到文字匹配目的的工具。

* 字元類

* 數量限定符

* 位置限定符

字元

含義例子

.匹配任意乙個字元

.ab匹配aab、bab等

匹配括號中的任意乙個字元

[abc]d匹配ad、bd、cd

-在內表示字元範圍

[0-9]、[a-z]

^位於內的開頭,匹配除括號中的字元之外的任意乙個字元

[^0-9]匹配除所有的數字任意乙個字元

[[:***:]]

grep工具預定義的一些命名字元類

[[:alpha:]]匹配乙個字母,[[:digit:]]匹配乙個數字

字元含義例子?

緊跟在其前面的單元匹配零次或一次

a?匹配a、ab、ac

+緊跟在其前面的單元匹配一次或多次

ab+匹配abb、abbb、abbbb

*緊跟在其前面的單元匹配零次或多次

ab*匹配ab、abbb、abbbb

緊跟在其前面的單元精確匹配n次

abc匹配abccc

緊跟在其前面的單元匹配至少n次

abc匹配abccc、abcccc

緊跟在其前面的單元匹配最多m次

abc匹配abc、abcc、abccc

緊跟在其前面二等單元匹配至少n次最多m次

abc匹配abc、abcc、abccc

字元含義例子^

匹配行首的位置

^a匹配行首為a

$匹配行末的位置

a$匹配以a結尾的行,^$匹配空行

\<

匹配單詞開頭的位置

\< th匹配以th開頭的單詞

>

匹配單詞結尾的位置

\>is匹配以is結尾的單詞

\b匹配單詞開頭或結尾的位置

aaa\b匹配以aaa開頭的單詞,\baaa匹配以aaa結尾的單詞

\b匹配非單詞開頭和結尾的位置

\bat匹配不以at開頭的單詞,at\b匹配不以at結尾的單詞

字元含義

\轉義字元,可以將普通字元轉義為特殊字元,也可將特殊字元轉換為普通字元

()將正規表示式的一部分括起來組成乙個單元

|連線兩個子表示式,表示或關係,只要任意乙個匹配,即可匹配,稱作析取符

我們發現,加上-e選項,就能匹配除,不加-e什麼都沒有,這是因為預設的是基本正規表示式,加上-e則是擴充套件正規表示式。其實,也可以使用egrep,也是擴充套件正規表示式。

區別:基礎正則和擴充套件正則的規範基本相同,只是在basic規範下,有些字元 ?、+、{}、()、| 解釋為普通字元,要表示特殊含義需要加 \ 進行轉義。

在extended規範下,這些符號被解釋為特殊含義,要取其字面值,也要對其進行 \ 轉義。

符號替換正則

匹配\d

[0-9]

數字字元

\d[^0-9]

非數字字元

\w[a-za-z0-9]

數字、字母、下劃線

\w[^\w]

非數字、字母、下劃線

\s[_\r\t\n\f]

會車、換行、製表符等空白區域

\s[^\s]

非空白區域

\d、\d只有在perl正則下才能匹配。

我們知道,grep預設的就是貪婪匹配,會將一行中所有滿足正則的全部匹配出啦。

而非貪婪模式是一旦發現匹配符合要求,立馬匹配成功,而不會繼續匹配下去(除非有g,開啟下一組匹配)。

用於指定乙個位置,這個位置應該滿足一定的條件。

1.零寬度正**

(?+正規表示式)

正規表示式所處位置之前,不包括正規表示式指定的位置的單元。

2.零寬度正後顧後發斷言

(?<=正規表示式)

正規表示式所處位置之後,不包括正規表示式指定的位置的單元。

1.過濾文字中的手機號碼

2.非零的正整數

3.由數字和26個英文本母組成的字串

linux 命令 正規表示式

1.cut擷取以 分割保留第七段 grep hadoop etc passwd cut d f7 2.排序 du sort n 3.查詢不包含hadoop的 grep v hadoop etc passwd 4.正則表達包含hadoop grep hadoop etc passwd 5.正則表達 點...

Shell命令 正規表示式

正規表示式是包含匹配,萬用字元是完全匹配 基礎正規表示式 test.txt示例檔案12 3456 78910 1112 mr.james said he was the honestmanincompanyy.123despire him.but since miss.mary came,she n...

grep正規表示式

grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。grep可用於shell指令碼,因為grep通過返回乙個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回0,如果搜尋不成功,則返回1,如果...