學習筆記第二十五節課
阿新 • • 發佈:2018-04-26
作業
正則介紹_grep
- 正則就是一串有規律的字符串,包含特殊符號。
- 對以後的寫shell腳本很大的幫助。可以實現很多復雜的需求。
第一個工具 grep
- grep 用來過濾關鍵詞。
- -c 行數,過濾出來的這些行有多少行。
- 做實驗,先把etc/passwd 作為一個樣本文件 cp 到 創建的grep目錄下。
- 然後 用grep 過濾 nologin grep有一個好處,在過濾關鍵詞的時候,會自動對關鍵詞上顏色。
- 然後用-c 選項 可以顯示剛才過濾的 有多少行。
- -n選項可以顯示帶顏色的 行號。
- -i選項不區分大小寫。 比如 文件中有一個nologin 是大寫的,那在-n顯示的時候 就不會過濾出來 但是加了i 就會顯示。
- -v是取反的意思,就是一個文件中,不帶關鍵詞的都被過濾掉了 -v就是把被過濾掉的顯示出來。
- -r就是遍歷所有子目錄。比如過濾 包含root 的etc下所有目錄,它就會顯示出來。 不加-r 他會提示這是一個目錄。
- 只能針對文件去做 不加r 的過濾。
- 在剛才的-r 過濾中也過濾出了 passwd 的含有root的 內容,如果向上翻找很麻煩的話,可以重定向到一個文件裏去,這樣就能很快查看到 你想要的結果了。
- -A +數字 就是把你過濾出來的關鍵詞加上關鍵詞下面的數字行 比如 A2 就會列出 關鍵詞下面的兩行。
- -B和A類似 是以上數字行
- -C是A和B的結合 會列出關鍵詞行數的上下各數字行。
grep/egrep 示例
- grep的用法有很多,比如過濾文件中的數字。 加上-v就是除了數字外都過濾出來,但是這個文件中沒有不包含數字的行。
- grep 也可以過濾 文件中以某個字母或者符號開頭的 用^ ,^的意思是以什麽開頭,。加上-v就是除了us開頭的都過濾出來。
- 以後可能會看很多服務相關的配置文件,就可以用這個方法,把帶#的註釋的行過濾掉。
- 還有一種用法,就是把除了數字或者字母 或者特殊符號 以外的都給過濾出來。這個和過濾數字正好相反。
- 還有個操作就是 ^[^0-9] 這個字符串的意思就是以非數字的開頭的行 過濾出來、
- ^ 這個字符 放在方括號外面 是以什麽開頭 放在裏面就是取非。
- grep ‘r.0‘ passwd 【.】點的意思就是任意一個字符,可以從操作中看出,r和o直接是任何字符都可以過濾出來。包括數字 特殊符號 還有. 本身、
- grep ‘mer‘ passwd 的意思是 在*前面的字符重復0-n次 這個n是表示多少次都可以。
- 【.*】組合起來就是 過濾所有字符,因為.表示任意字符。
- {}在grep中直接寫是沒有任何意義的 就是一個花括號。 但是在正則中用法可以表示前面字符重復的一個範圍,就是加上脫譯。
- 如果覺得這樣寫很麻煩 加脫譯符號很別扭, 可以用egrep 這樣就不用脫譯符號就可以識別了。
- 或者是不用egrep 用grep -E
- 也可以寫多個字符 的重復範圍,要加() 表示一個整體,加這個也要egrep 或者 -E 來脫譯這個()。
-
- 和 挺像的, 想用+ 要脫譯或者用egrep +號是前面的字符一次或者多次, 沒有0。 (也就是說比如mer er前面如果沒有m 就是代表er前面為0,也會把er顯示出來,但是+er的話 不顯示0 就是只會顯示 帶有m和er 的字母組合) *是0到多次。
- ?表示在?前面的字符重復次數為0或者1 要麽有 要麽沒有。(比如m?er er前面如果m很多 只會顯示一個,)
- | 在這裏表示的意思是或者。
學習筆記第二十五節課