shell 指令碼 正規表示式

2021-07-24 00:23:49 字數 3829 閱讀 4567

字元類

(character class):

如上例的x和

y,它們在模式中表示乙個字元

,但是取值範圍是 一類字

符中的任意乙個。

數量限定符

(quantifier):

郵件位址的每一部分可以有乙個或多個x字元

,ip位址的每一部 分

可以有1-3個y

字元位置限定符

(anchor)部分,

用普通字元@和

.隔 開

,ip位址分四部分,用

.隔開,每一部分都可以用字元類和數量限定符

描述。為了表示位置關係

,需要位置限定符的概念

,將在下面介紹。

規定一些特殊語法表示字元類、數量限定符和位置關係

,然後用這些特殊語法和普通字元

一起表示 乙個模式

,這就是正規表示式

(regular expression)

。注意正規表示式引數用單引號括起來了

,因為正規表示式中用到的很多特殊字元在

shell

中也有特殊 含義(例如

\),只有用單引號括起來才能保證這些字元原封不動地傳給grep

命令,而不會被

shell

解釋掉。

以上介紹的是

grep

正規表示式的

extended

規範

,basic

規範也有這些語法

,只是字元

?+{}|()

解釋 為普通字元

,

要表示上述特殊含義則需要加

\

轉義。如果用

grep

而不是

egrep,

並且不加

-e

引數

,

則 應該遵照

basic

規範來寫正規表示式。 (一定要注意!!!!!)

方便下面是用 這裡重新命名一下命令

alias grep='grep -e --colour'

例子:

[bozi@localhost grep]$ echo '@@abc'|grep '[@asd].ab'

@@abc

[bozi@localhost grep]$ echo '@@abc'|grep '[.asd].ab'

[bozi@localhost grep]$ echo '.@abc'|grep '[.asd].ab'

.@abc

這裡裡面的所有的字元都沒有特殊含義 如.    但在外面是匹配任意乙個的意思

原文:[bozi@localhost grep]$ cat file

[email protected]

dksaljdkl-sdasdas.com

[email protected]

[email protected]@454654

dsdsad@asdsa#@.com

[bozi@localhost grep]$  grep -e '[a-za-z0-9_.-]+@[a-za-z0-9_.-]+\.[a-za-z0-9_.-]+' file

[email protected]

[email protected]

[email protected]@454654

更精確 加^$ 限定 行首行尾

[bozi@localhost grep]$  grep -e '^[a-za-z0-9_.-]+@[a-za-z0-9_.-]+\.[a-za-z0-9_.-]+$' file

[email protected]

[email protected]

egrep

相當於grep -e,

表示採用

extended

正規表示式語法。

grep

的正規表示式 有

basic

和extended

兩種規範

,它們之間的區別下一節再解釋。另外還有

fgrep命令,

相當於grep - f,

表示只搜尋固定字串而不搜尋正規表示式模式

,不會按正規表示式的語法解釋後面的引數。

匹配ip

file 內容

192.168.11.2

192.168.1sas1.2

19as2.121.11.2

192.1sa28.11.2

192.16as1.11.2

192.111.1s1.2

192.1.1.8.12.2

192.168.2sa1.2

192.1.68.12.1

[bozi@localhost grep]$ grep '[0-9]\.[0-9]\.[0-9]\.[0-9]' file

192.168.11.2

19as2.121.11.2

192.1.1.8.12.2                #grep 找的是 包含模式的行 因為包含模式192.1.1.8  所以這一行也找出來了

192.1.68.12.1

另一種方法:

[bozi@localhost grep]$ grep '([0-9]\.)[0-9]' file

192.168.11.2

19as2.121.11.2

192.1.1.8.12.2                

192.1.68.12.1

更精確的方法:

[bozi@localhost grep]$ grep '^([0-9]\.)[0-9]$' file

192.168.11.2

本文出自 「城市獵人」 部落格,請務必保留此出處

shell指令碼 正規表示式

一 正規表示式 正規表示式是用來描述字串排列和匹配模式的一種語法規則,是字串的模式分割 匹配 查詢和替換操作。正規表示式是包含匹配,操作字串,如grep,awd,sed,而萬用字元是完全匹配,如ls,find,cp 正則的與萬用字元的不同,如正規表示式aa 第二個a不起作用,意思是以a開頭的,而萬用...

shell指令碼 正規表示式

正規表示式分為基礎正則和擴充套件正則,都是為了匹配符合預期要求的字串 只需要記住,對檔案內容或是展示文字的操作都是正則,而對目錄或檔名的操作則都是萬用字元 例如find指令 擴充套件正則包含基礎正則,而且多出了 四個指令 注意這裡的 要和管道符分開 擴充套件正則不需要像基礎正則一樣對某些符號進行轉義...

shell指令碼之正規表示式

一 基礎正規表示式例項 元字元總結 在linux系統中常見的檔案處理工具中grep和sed支援基礎正規表示式。grep命令選項 i 查詢時不區分大小寫 v 查詢時反向輸出,如查詢不包含某些字元的內容 n 表示查詢出結果後顯示行號 這三個選項可以結合使用,如 in 查詢時不區分大小寫並顯示行號。示例 ...