1. 程式人生 > >正則 :grep 工具的正則表達式

正則 :grep 工具的正則表達式

nag [] 幫助 inittab 格式 abc 例子 個數字 正則


正則:


.正則就是一串有規律的字符串

.正則對編寫shell腳本有很大幫助

.各種編程語言中都有正則

正則工具:grep/egrep(egrep是grep的擴展)、sed、awk

grep (過濾關鍵詞)

技術分享圖片

格式: grep [-cinvABC] 'word' filename

(1)-c 行數

技術分享圖片


(2)-i 不區分大小寫

技術分享圖片

(3)-n 顯示行號

技術分享圖片

(4)-v 取反(過濾出不是關鍵字外的行)

技術分享圖片

(5)-r 遍歷所有子目錄

(6)-A 後面跟數字n,過濾出符合要求的行以及下面n行

技術分享圖片

(7)-B 後面跟數字n,過濾出符合要求的行以及上面n行

技術分享圖片

(8)

-C 後面跟數字n,同時過濾出符合要求的行以及上下各n行

技術分享圖片

例子 grep正則表達式

no1: grep '[0-9]' passwd

[]裏的數字0-9表示0-9之間有一個數字,不理數字是有幾個都過濾出,即過濾所有帶數字的行

技術分享圖片

no2: grep -v '[0-9]' /etc/inittab

(過濾出不帶數字的行)

技術分享圖片


no3: grep -nv '^#' inittab

(過濾出不以#開頭的行,“^”開頭符

技術分享圖片

no4 :grep '[^a-zA-Z]' inittab

grep '^[^a-zA-Z]' inittab ->過濾出不是以字母開頭的行,即過濾出以數字開頭的行

(當“^”放在了[]裏後,它的意思就是“非”)

技術分享圖片


no5 :grep 'r.o' passwd

(這裏的“.”代表任意一個字符)

技術分享圖片


no6 :grep -n 'o*o' passwd

(*:代表*前面字符零個或多個,o*:一個o或者多個o)

技術分享圖片

no7 : grep -n '.*' passwd

(表示過濾所有,“.*”表示所有)

技術分享圖片


no7 :grep -n 'o\{2\}' passwd

({}表示前面符號重復範圍,’o\{2\}’表示o出現兩次(或者2的次數冪)在要在轉義符號“\”)

技術分享圖片

grep -n 'o\{0,3\}' passwd

不帶轉義符號“\”的寫法

egrep -n 'o{2}' passwd

grep -En 'o{2}' passwd

grep -En '(oo){2}' passwd



no8 :grep -n 'o\+b' passwd

("+"表示+前面字符一次或多次,而*是零次或多次)

技術分享圖片



no9 :egrep -n 'o?t' passwd

grep -En 'o?t' passwd

grep -n 'o\?t' passwd

(?表示問號前面字符零次或者一次)


技術分享圖片


no10 :grep -En 'root|nologin' passwd

(|表示或者)

技術分享圖片


在grep命令中有特殊符號的時候

(1)使用轉義符號

(2)-E

(3)使用egrep

正則 :grep 工具的正則表達式