1. 程式人生 > >學習筆記第二十五節課

學習筆記第二十五節課

作業

正則介紹_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很多 只會顯示一個,)
  • 技術分享圖片
  • | 在這裏表示的意思是或者。
  • 技術分享圖片

學習筆記第二十五節課