Linux - 正則介紹_grep

什麼是正則?
正則就是一串有規律的字符串 掌握好正則對於編寫shell腳本有很大幫助 各種編程語言中都有正則,原理是一樣的

grep [-cinvABC] 'word' filename
-c 行數
-i 不區分大小寫
-n 顯示行號
-v 取反
-r 遍歷所有子目錄
-A 後面跟數字,過濾出符合要求的行以及下面n行
-B 同上,過濾出符合要求的行以及上面n行
-C 同上,同時過濾出符合要求的行以及上下各n行

公式:
grep '過濾詞' 文件名
grep 'root' passwd 在passwd文件裏過濾出nologin,centos7裏grep好的特點是,過來的關鍵詞自動標紅
Linux - 正則介紹_grep
grep -c 'root' passwd #統計出現root過濾詞的,有幾行
Linux - 正則介紹_grep
grep -n 'root' passwd #顯示root過濾詞在多少行出現的,並顯示行號
Linux - 正則介紹_grep

grep -i 'root' passwd 不區分'過濾詞的大小寫'
Linux - 正則介紹_grep
-v 取反 grep -v 'root' passwd 有過濾詞的,不顯示。
Linux - 正則介紹_grep

-r 遍歷所有子目錄 #子目錄裏的過濾詞也會過濾

-A 後面跟數字,過濾出過濾詞所在的行,及A後面更得數字的行。
Linux - 正則介紹_grep
B 同上,過濾出符合要求的行以及上面n行
C 同上,同時過濾出符合要求的行以及上下各n行

grep -n 'root' /etc/passwd
grep -nv 'nologin' /etc/passwd

grep '[0-9]' passwd 列出任意一個0-9的數字
Linux - 正則介紹_grep
grep -v '[0-9]' passwd -v 取反, 任意一個0-9的數字不列出來。
Linux - 正則介紹_grep

grep -v '^#' passwd #^ ^ 代表以某某開頭,例如:以#號開頭 看配置文件,可以去掉以#開頭的文件

grep -n '[^0-9]' passwd #非0-9,代表 不是數字
grep '^[^a-zA-Z]' test.txt #同上,非字母。 ^放在方括號裏面,代表非
grep -v '^[^0-9]' passwd #以不是數字開頭的行

grep 'r.o' test.txt #r.o的任意的一個字符
grep 'oo' test.txt # 值得是 一定要和前面的字符相關的,代表 o以前0次或多次
grep '.
' test.txt #.* 所有
egrep 'o{2}' /etc/passwd # 正則裏面,{}表示一個範圍。左邊的命令是匹配不到的,正確的寫法應該下面這個:
grep 'o{2}' /etc/passwd \進行脫意。 匹配有兩個o的,如果不想寫脫意\ 可以這樣寫:
egrep 'o{2}' /etc/passwd = grep 'o{2}' /etc/passwd =grep -E 'o{2} /etc/passwd

egrep 'o+t' /etc/passwd # +代表 加號o以前一次或多次,後面緊跟着t
egrep 'o+' /etc/passwd = grep 'o\0+' /etc/passwd

egrep 'oo?' /etc/passwd #?值得是?前面字符重複的0次或1次,類似

egrep 'root|nologin' /etc/passwd # | 或者的意思,
egrep 'root|nologin' /etc/passwd = grep -E 'root|nologin'

總結: . 表示任意一個字符,,表示0個或多個字符, .通配 {}表示範圍,花括號前面字符的範圍,可以用小括號括起來。+表示+前面的字符一個或多個。?表示0個或1個?前面的字符,| 表示或者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章