一 指令介紹
1.1 功能
grep指令是一種強大的文本搜尋工具,它能使用正規表達式搜尋文本,并把比對的行列印出來。用于過濾/搜尋的特定字元。可以把grep了解成字元查找工具,可使用正規表達式能配合多種指令使用,使用上十分靈活。
grep與sed、awk合稱為Linux中的三劍客,grep速度最快。
1.2 文法
grep [參數]
常用選項
- -Ax:在輸出的時候包含結果所在行之後的指定行數,這裡指之後的x行,A:after
- -Bx:在輸出的時候包含結果所在行之前的指定行數,這裡指之前的x行,B:before
- -Cx:在輸出的時候包含結果所在行之前和之後的指定行數,這裡指之前和之後的x行,C:context
- -c:統計比對到的行數,不是次數
- -E:使用擴充正規表達式,而不是基本正規表達式,在使用-E選項時,相當于使用egrep
- -e:實作多個選項的比對,邏輯or關系
- -w:精确比對,隻顯示全字元合的列
- -i:不區分大小寫
- -n:顯示行号(哪些行包含指定的字元串)
- -o:隻顯示符合條件的字元串,但是不整行顯示,每個符合條件的字元串單獨顯示一行
- -v:輸出不帶關鍵字的行(反向查詢,反向比對)
- -q:不顯示任何資訊
- --color高亮顯示(centos6需要加這個選項,centos7不需要,有别名)
二 使用場景
2.1 案例1
統計符合條件的總行數
grep -i -c "job_name" prometheus.yml
2.2 案例2
隻顯示比對到的關鍵字,而不是将整行輸出
grep -o "job_name" prometheus.yml
注意:-o選項會把每個比對到的關鍵字都單獨顯示在一行中進行輸出
grep -i -n -o "123" testgrep
2.3 案例3
找到符合條件的行的同時,還要顯示之前的行,-B選項的後面必須有數字否則會報錯
grep -B1 "年齡:18" testgrep1
2.4 案例4
找到符合條件的行的同時,還要顯示之後的行,-A選項的後面必須有數字否則會報錯
grep -A1 "年齡:18" testgrep1
2.5 案例5
找到符合條件的行的同時,顯示其前後的行,-C選項的後面必須有數字否則會報錯
grep -C1 "年齡:18" testgrep1
2.6 案例6
精确比對,表示搜尋的字元串作為一個獨立的單詞時才會被比對到
grep -w "zsy" testgrep
2.7 案例7
查找不包含某個字元串的行
grep -v -i "zsy" testgrep
2.8 案例8
可以同時比對多個目标,多個目标之間存在“或”關系,比對其中的任意一個都算作比對成功
grep -e "abc" -e "test" testgrep
2.9 案例9
靜默模式,無論是否比對到字元串,都不會輸出任何資訊,配合“echo $?”指令
grep -q "test" testgrep
至此,grep指令梳理完成。