字元類
(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
dksaljdkl-sdasdas.com
[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]@454654
[bozi@localhost grep]$ grep -e '^[a-za-z0-9_.-]+@[a-za-z0-9_.-]+\.[a-za-z0-9_.-]+$' fileegrep
相當於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 查詢時不區分大小寫並顯示行號。示例 ...