🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

前言

「是否還在用眼睛追蹤數萬行的日誌?」
「面對突發的故障調查,是否曾感到不知從何下手的焦慌?」
「是否需要一個個打開專案來尋找關鍵字?」
每位新進現場的工作者,皆曾經歷這樣令人沮喪的「調查泥沼」。其實,只要對 grep 命令有更深入的了解,就能從這些煩惱中解放出來。

本文將介紹 grep 的選項,並聚焦於現場實際上非常有用的運用方式,特別是「正規表達式」以及與 find 等其他命令的「搭配技術」。

讀完本文後,您將成為可以用一條命令輕鬆結束繁瑣調查工作「搜尋達人」。

【基本篇】常用的五個便利選項

  • 不僅僅是搜索字符串!
    這裡將介紹您必須記住的 grep 基本且最強大的選項!
# -i: 忽略大小寫搜索
$ grep -i "error" server.log

# -n: 顯示匹配行的行號
$ grep -n "Exception" app.log

# -A 3: 顯示匹配行之後的3行
$ grep -A 3 "Exception" app.log
## 若想獲取匹配行之前的內容使用 -B
## 若想獲取匹配行的前後內容使用 -C

# -v: 提取不包含指定字符串的行
$ grep -v "DEBUG" system.log

# -r: 以遞迴的方式搜索目錄下的內容(超重要!)
$ grep -r "function_name" ./src

# -c: 計算匹配的行數
$ grep -c "WARNING" access.log

# -a: 對於二進位文件進行搜索
grep -a "hogehoge" aplocation.dat

【主題】利用正規表達式發揮grep的真正價值

  • 發揮 grep 能力的關鍵在於「正規表達式」
  • 雖然看起來可能會有些困難,但實務中使用的模式是有限的。這裡將集中說明只需記住的內容即可。

常用的正規表達式元字符

^: 行首
$: 行尾
.: 任意一字符
*: 直前字符的零次或多次重複
[]: 方括號內的任意字符

實用的應用範例(Before/After)

想做的事情: 從日誌中提取 IP 地址(類似的字符串)。

Before

# 這樣只能找到 "127.0.0.1" ...
$ grep "127.0.0.1" access.log

After

# 使用 egrep (或 grep -E) 以擴展正規表達式進行智慧搜索
$ egrep "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" access.log

【實踐篇】利用其他命令的搭配技術最大化調查效率

  • grep 命令本身就已經相當強大,但與其他命令結合後能發揮其真正價值!

find × grep: 僅從特定模式的文件中(例如:.log 擴展名)高速搜索

# 從當前目錄下的 .log 文件中搜索 "FATAL"
find . -name "*.log" | xargs grep "FATAL"

管道 | 的運用: 進一步用 grep 獲取 grep 的結果(與 grep -v 組合使用時超強大)

# 從 user_id: 123 的日誌中排除 "DEBUG" 級別的日誌顯示
grep "user_id: 123" application.log | grep -v "DEBUG"

參考文獻

<iframe id="qiita-embed-contenta38b4046ce6d83e2327a00c7def8f812"></iframe>
<iframe id="qiita-embed-content
0b6496a7217342d0c04d9b7021787d88"></iframe>


原文出處:https://qiita.com/TonitolCalsis/items/e71715c578c09c2ac960


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝21   💬4   ❤️6
658
🥈
我愛JS
📝1   💬5   ❤️2
48
🥉
酷豪
1
#5
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付