
01 一起來認識 grep!
Linux 命令三劍客,sed、grep、awk,
- sed:擅長資料修改,
- grep:擅長資料查找定位,
- awk:擅長資料切片,資料格式化,功能最復雜,
grep 可以說是這三個命令中的紅人,是我們日常使用頻率最高的命令,下面和鍋鍋一起來搞定它,
02 grep 命令常用可選引數
- -n # 顯示行號,
- -i # 不區分大小寫,
- -c # 統計匹配行,命中查找字串的總行數,
- -v # 顯示不包含匹配文本的所有行,
- -r # 遞回處理,
- -E # 使用正則運算式作為匹配進行查找(注:-e 沒有-E 支持的完整),
- --include # 指定匹配的檔案型別,
- --exclude # 過濾不需要匹配的檔案型別,
使用示例:
- grep -i "error" info.log
- grep -in "error" info.log #不區分大小寫,并顯示行號,
03 grep 同時查找多個檔案
- grep -in "key" info.log warn.log # 從檔案info.log 和 warn.log 查找字串"key",不區分大小寫,并顯示行號,
- grep -n "key" * # 查詢當前目錄下所有檔案中包含字串"key",并顯示對應的行號,
04 grep 遞回查找
前面已經總結過,-r/R引數,即 recursion,遞回的意思,
- grep -rn "key" * # 遞回查詢當前目錄及其子目錄所有檔案中包含字串"key",并顯示對應的行號,
05 grep 查找對應字符前后 n 行
- grep -a10 "bug" info.log #查看"bug"字符后的10行,a->after,
- grep -b10 "bug" info.log # 查看"bug"字符前的10行,b->before,
- grep -c10 "bug" info.log # 查看"bug"字符前后各10行,
06 grep 常用組合命令示例
- history|grep rm # 查找歷史命令中執行了哪些洗掉命令,
- cat *.log | grep 'exception' # 查找當前目錄下所有log日志中的exception字符行,
- ps -ef|grep java # 此命令為一般運維中最常用命令,查詢linux行程中是否運行了此程式,
- rpm -qa |grep yum # 查詢linux下是否有安裝過此rpm包,
- grep -En '^2020' info.log # 使用正則運算式查找,查找以 2020 開頭的行,并顯示其行號,
- grep -rn "warn" * --include "*.log" # 遞回查詢當前目錄及其子目錄所有log型別檔案中包含字串"warn",并顯示對應的行號,
- netstat -nap|grep -E "6651"|grep -E "203.130.41.24" # 多個條件過濾查找,
- tail -1000f info.log | grep -E "aaa|bbb" # aaa 或 bbb 的條件都可以搜索到,這個命令實踐中,滾動實時查看日志很常用,
- tail -10000f info.log |grep 'check' >> call.log # 查找,并把符合規則的輸出到對應檔案中
- grep -E 'keyword1.*keyword2' info.log # 多個關鍵字同時出現查找過濾
- grep -E '^Error' info.log |grep 'failed'|awk -F ' ' '{print $10}' # 查找以 Error 開頭,過濾包含 failed 的行,并以空格分隔,輸出第10個的內容
07 grep 相關的拓展命令
- pgrep:查找正在運行的程式,pgrep 是 grep 的擴展功能,同樣的還有 egrep、fgrep,
- egrep:擴展正則運算式,相當于grep –E,
- fgrep:不識別決議正則運算式,一般很少用,
08 小結
- grep 命令,擅長查找字串,正向查找,反向查找,正則查找,多檔案查找,遞回查找等,
- grep 查找對應字符前后 n 行,對大日志檢索關鍵字時比較有用,此外 grep 還可以配合其他命令一起大展身手!配合正則運算式,可以更加靈活的實作查找功能,正則運算式相關的內容前面的文章有一些總結,
「不甩鍋的碼農」原創,轉載請注明來源,未經授權禁止商業用途!同名 GZH 請關注!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/421288.html
標籤:其他
上一篇:關于結構體中指標的一些探討
