正規表示式 Linux

2021-06-21 20:49:26 字數 3511 閱讀 5178

主要內容:1、正規表示式2、基礎3、擴充套件4、通配5、grep命令

正規表示式基礎(1)

元字元

(metacharacters)是用來闡釋字元表示式意義的字元,簡言之,元字元就是描述字元的字元,它用於對字元表示式的內容、轉換及各種操作資訊進行描述。

正規表示式是由一串字元和元字元構成的字串,簡稱re(regularexpression)。

正規表示式的主要功能是文字查詢字串操作,正規表示式可以匹配文字的乙個字元或字元集合。

符號意義

* 0個或多個在*字元之前那個普通字元

. 匹配任意字元

^ 匹配行首,或後面字元的非

$ 匹配行尾

匹配字元集合

\ 轉義符,遮蔽乙個元字元的特殊意義

\<\> 精確匹配符號

\ 匹配前面字元出現n次

\ 匹配前面字元至少出現n次

\ 匹配前面字元出現n次與m次之間

示例:*符號用於匹配前面乙個普通字元的0次或多次重複

hel*o:*符號前面的普通字元是l,*字元就表示匹配l字元0次或多次,如字串helo、hello、hellllllo都可以由hel*o來表示

.符號用於匹配任意乙個字元

…73.表示前面三個字元為任意字元,第4和第5個字元是7和3,最後乙個字元為任意字元,如xcb738、4j973u都能匹配上述字串

^符號用於匹配行首,表示行首的字元是^字元後面的那個字元

^cloud表示匹配以cloud開頭的行

$符號匹配行尾,$符號放在匹配字元之後a、b、1、2等字元屬於普通字元,普通字元可以按照字面意思理解,如:a只能理解為英文的小寫字母a,沒有其他隱藏含義。

micky$表示匹配以micky結尾的所有行

^$  

表示空白行

匹配字元集合,該符號支援窮舉方法列出字元集合的所有元素

[0123456789]、[0-9]……

[a-za-z] [a-za-z]*  

匹配所有英文單詞

\符號是轉義符,用於遮蔽乙個元字元的特殊意義

\.  

\$  \^

\<\>符號是精確匹配符號,該符號利用\符號遮蔽<>符號

\精確匹配單詞the,them, they等不匹配

\系列符號表示前乙個字元的重複

\:匹配前面字元出現n次 ,如 jo\b 匹配jooob

\:匹配前面字元至少出現n次,如jo\b匹配jooob、joooob、jooooob等字串

\:匹配前面字元出現n次與m次之間,如jo\b匹配jooob、joooooob等字串

[a-z] \: 匹配5個小寫英文本母,比如hello、house等

正規表示式擴充套件:(awk和perl支援)

符號 意義

? 匹配0個或1個在其之前的那個普通字元

+ 匹配1個或多個在其之前的那個普通字元

() 表示乙個字元集合或用在expr中

| 表示「或」意義,匹配一組可選的字元

通配:通配(globbing)是把乙個包含萬用字元的非具體檔名擴充套件到儲存在計算機、伺服器或者網路上的一批具體檔名的過程

最常用的萬用字元包括正規表示式元字元:?、*、、{}、^等,萬用字元與元字元意義不完全相同:

*

符號不再表示其前面字元的重複,而是表示任意位的任意字元

?

字元表示一位的任意字元

^符號在通配中不代表行首,而是代表取反意義

舉三個例子:

[root@zawu globus]# ls -l *.awk

[root@zawu globus]# ls -l 0?.pem

[root@zawu globus]# ls -l [a-h]*.[^awk]*

grep命令:

grep是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來,grep也是linux中最廣泛使用的命令之一

grep [選項][模式][檔案…]

選項如下頁表所示

模式:可以是字串,也可以是變數,還可以是正規表示式。

說明:無論模式是何種形式,只要模式中包含空格,就需要使用雙引號將模式括起來,

舉例:

[root@zawu globus]# grep certificate00.pem

[root@zawu globus]# grep user certificate 00.pem

[root@zawu globus]# grep "user certificate" 00.pem

檔案可以有多個,亦可以用通配來表示

選項

意義

-c

只輸出匹配行的數量

-i  

搜尋時忽略大小寫 ignore

-h 查詢多檔案時不顯示檔名  

-l只列出符合匹配的檔名,而不列出具體匹配行 

line  

不列匹配行

-n 列出所有匹配行,並顯示行號  

行and number

-s 不顯示不存在或無匹配文字的錯誤資訊  

-v顯示不包含匹配文字的所有行 

相反的

-w 匹配整詞  

word

-r 遞迴搜尋,不僅搜尋當前工作目錄,而且搜尋子目錄  

recursion

-e 支援擴充套件的正規表示式  

extent

-f 不支援正規表示式,按照字串的字面意思進行匹配  

font

posix字元類:

類名

意義

[:upper:] 表示大寫字母[a-z]

[:lower:]  

表示大寫字母[a-z]

[:digit:] 表示阿拉伯數字[0-9]

[:alnum:] 表示大小寫字母和阿拉伯數字[0-9a-za-z]

[:space:] 表示空格或tab鍵

[:alpha:] 表示大小寫字母[a-za-z]

[:cntrl:] 表示ctrl鍵

[:graph:]或[:print:] 表示ascii碼33-126之間的字元

[:xdigit:] 表示16進製制數字[0-9a-fa-f]

linux系統支援三種形式的grep命令(grep命令族):

grep:標準grep命令,支援基本正規表示式

egrep:擴充套件grep命令,支援基本和擴充套件正規表示式,等價於grep –e

fgrep:快速grep命令,不支援正規表示式,按照字串的字面意思進行匹配,等價於grep -f

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...

Linux正規表示式

正規表示式是一種符號表示法,用於識別文字模式。linux處理正規表示式的主要程式是grep。grep搜尋與正規表示式匹配的行,並將結果輸送至標準輸出。1.grep匹配模式 grep按下述方式接受選項和引數 其中,regex表示正規表示式 1 grep options regex files 其中op...

Linux 正規表示式

一 語系對正規表示式的影響 對 a z 的查詢結果影響很大 lang c 0 1 2 3 4 a b c d a b c d lang zh cn 0 1 2 3 4 a a b b c c 二 特殊符號與代表意義 alnum 英文大小寫字元與數字 a z 0 9 a z alpha 英文大小寫字元...