1. 程式人生 > >26期20180703 正則 grep

26期20180703 正則 grep

gin -i shadow 9.png color 找文件 正則表達式 san 多個

7月3日任務

9.1 正則介紹_grep上
9.2 grep中
9.3 grep下
擴展
把一個目錄下,過濾所有*.php文檔中含有eval的行
grep -r --include="*.php" 'eval' /data/



正則表達式

技術分享圖片

技術分享圖片


使用grep可以查找文件中的關鍵字。

語法: grep "關鍵字" 文件名

技術分享圖片


有一些選項是可以選的。

-n 是顯示行號

技術分享圖片


-c顯示行數,一共在這個文件中有多少行帶有這個關鍵字

技術分享圖片


-v取反,就是多少行沒有這個關鍵字,也就是除了關鍵字的那兩行外

技術分享圖片


-A 數字,表示顯示出關鍵字以及往下數字行的內容

技術分享圖片


-B 數字,是和A想反是往上數字行

技術分享圖片


-C 數字 就是既有上又有下,往上數字行 往下數字行

技術分享圖片



技術分享圖片


grep '[0-9]' filename

表示0-9範圍裏的數字匹配

技術分享圖片

技術分享圖片

也可以采用排除的選項 -v

grep -v '[0-9]' filename

技術分享圖片


關鍵字裏的參數


grep -v '^#' filename

grep -v '^[0-9]' filename 就是查找非開頭為數字的行

-v是取反 ^是行開始的意思 ^#就是以#為開頭的行

技術分享圖片


技術分享圖片

技術分享圖片


grep -v ‘^#’ inittab 取出來首字母不為#的行

技術分享圖片


註意:這個^是在[]裏面

grep '[^0-9]' inittab 作用是非0-9,只要不是數字任何一個字符都符合要求。就是說哪怕有一個字符不為0,這一行都滿足要求。

這個是以一個非數字的字符開頭的行,只要不是數字開頭都符號,哪怕是後面有數字都沒有關系。所以下面

技術分享圖片

技術分享圖片

技術分享圖片技術分享圖片

同樣的,假如前面再加上一個 ^ 就表示首位也不能是數字,所以首位有數字的也沒了。

技術分享圖片

技術分享圖片


grep 'r.o' passwd 這裏的點代表了任意一個字符,占位符。

技術分享圖片


grep 'o*o' passwd *表示左邊匹配0到無限次,右邊必須存在

技術分享圖片

如果是使用'.*'的話,表示匹配任意字符。*的左邊可有可無嘛

技術分享圖片

比如像找某個用戶的那一行,直接用'用戶名.*bash' 就可以查到

技術分享圖片


正則中{}表示範圍,但是需要用阻轉義符 \

grep 'o\{2\}' passwd 表示有2個o的

技術分享圖片

grep 'o\{1,3\}' passwd 表示1-3個o,記得用逗號,

技術分享圖片


但是轉義符比較免費,看起來也比較不舒服,是否可以不用\?

那樣的話,egrep就登場了

egrep是grep的擴展

grep -E = egrep

egrep 'o{2}' passwd等同於 grep 'o\{2\}' passwd 等同於 grep -E 'o{2}' passwd

技術分享圖片

技術分享圖片

如果是像匹配最後一個字符是什麽字母的話,需要在這個字母後面加上$ 換行符 表面後面沒有了

比如查找s開頭n結尾

技術分享圖片


+ 在egrep 或者 grep -E下使用無需轉義符

+和*很像,區別是 + 表示+左邊一次或者無數次 而*是表示左邊0次或者無數次

技術分享圖片


egrep 'o?t' passwd 問號表示問號前面字符出現的次數為0或者1

技術分享圖片


|表示或者,但是也需要使用egrep或者grep -E 來使用。|是選其一,可以有多個

技術分享圖片


26期20180703 正則 grep