40 個 Grep 命令 ! 運維記住了
grep是Linux系統中的一個文本搜索工具, 它就像一個文本世界的“放大鏡”,能幫我們在大量文本中快速找到含有特定內容的行。
無論是查看文件、分析日志,還是處理各種文本數據,grep都能大顯身手,是系統管理員和開發人員的得力助手,

grep能干啥
- 快速定位信息 :在海量文本中,grep能瞬間定位到包含目標關鍵詞的行,讓我們不用逐行瀏覽,省時省力
- 分析日志 :排查系統故障時,通過grep篩選日志文件中的錯誤信息,能幫我們迅速找到問題根源
- 提取數據 :從雜亂的文本數據中,精準提取出符合特定格式或要求的部分,方便后續處理
基礎入門篇
1.grep "hello" file.txt
作用:在 file.txt 文件里,搜索所有包含 “hello” 這個詞的行
2.grep -i "hello" file.txt
作用:-i 忽略大小寫。這樣 “Hello”, “HELLO” 都能被搜到
3.grep -w "hello" file.txt
作用:-w 全字匹配。只匹配獨立的單詞 “hello”,像 “hello-world” 或者 “helloworld” 就不會被匹配
4.grep -v "error" file.txt
作用:-v 反向選擇。顯示所有不包含 “error” 的行,用來過濾掉不想要的信息特別有用
5.grep -n "hello" file.txt
作用:-n 顯示行號。在結果前面會標出這行在文件中的第幾行,方便你定位
6.grep -c "hello" file.txt
作用:-c 計數。不顯示具體內容,只告訴你含有 “hello” 的行總共有多少行
7.grep -r "hello" /path/to/dir/
作用:-r 遞歸搜索。在一個目錄及其所有子目錄、子文件里搜索 “hello”
8.grep -l "hello" *.txt
作用:-l 只顯示文件名。在一堆 .txt 文件里,哪個文件包含了 “hello”,就只列出它的文件名
9.grep -h "hello" *.txt
作用:當搜索多個文件時,默認會顯示文件名。-h 可以隱藏文件名,只顯示匹配的內容
10.grep -o "hello" file.txt
作用:-o 只輸出匹配到的部分。比如一行是 “abc hello def”,用這個命令就只輸出 “hello”,非常干凈
正則表達式篇!
11.grep "^hello" file.txt
作用:^ 表示行首。搜索所有以 “hello” 開頭的行
12.grep "world$" file.txt
作用:$ 表示行尾。搜索所有以 “world” 結尾的行
13.grep "^$" file.txt
作用:匹配所有空行
14.grep "." file.txt
作用:. 匹配任意一個字符。這會匹配幾乎所有非空行
15.grep "he..o" file.txt
作用:搜索像 “hello”, “hexlo”, “heABo” 這樣的模式,中間兩個點代表兩個任意字符
16.grep "h[aeiou]llo" file.txt
作用:[ ] 匹配括號內任意一個字符。這里會匹配 “hallo”, “hello”, “hillo”, “hollo”, “hullo”
17.grep "[0-9]" file.txt
作用:匹配所有包含任何數字的行
18.grep "[a-z]" file.txt
作用:匹配所有包含任何小寫字母的行
19.grep "[A-Z]" file.txt
作用:匹配所有包含任何大寫字母的行
20.grep "hello\|world" file.txt
作用:\| 是“或”的意思。匹配包含 “hello” 或者 包含 “world” 的行
21.grep "he*" file.txt
作用:* 表示前面的字符出現0次或多次。這里會匹配 “he”, “hee”, “heee” 等。注意:它也會匹配 “h”,因為 e 出現了0次
22.grep "he\+" file.txt
作用:\+ 表示前面的字符出現至少1次。這里會匹配 “he”, “hee”, “heee” 等,但不會匹配只有 “h” 的行
23.grep "he\?“ file.txt
作用:\? 表示前面的字符出現0次或1次。會匹配 “h” 或 “he”
24.grep “h.\?o“ file.txt
作用:匹配 “h” 和 “o” 中間有0個或1個任意字符的模式,如 “ho”, “hxo”
25.grep -E “hello{2,}” file.txt
作用:-E 啟用擴展正則,{2,} 表示前面的 ‘o’ 至少連續出現2次。會匹配 “helloo”, “hellooo” 等。
高級技巧
26.grep -A 2 “error” file.txt
作用:-A 顯示匹配行之后的2行內容。看錯誤日志時,連錯誤信息下面的上下文一起看
27.grep -B 2 “error” file.txt
作用:-B 顯示匹配行之前的2行內容。看錯誤發生前發生了什么
28.grep -C 2 “error” file.txt
作用:-C 顯示匹配行前后各2行的內容。最常用的上下文查看模式
29.ps aux | grep “nginx”
作用:經典組合!查看所有進程,然后過濾出和 “nginx” 相關的進程
30.history | grep “ssh”
作用:從你的歷史命令里,快速找到所有包含 “ssh” 的命令
31.grep -e “error” -e “fail” file.txt
作用:-e 指定多個模式。相當于同時搜索 “error” 和 “fail”
32.grep -f patterns.txt file.txt
作用:-f 從文件 patterns.txt 中讀取要搜索的模式列表,一行一個模式
33.grep –color=auto “hello” file.txt
作用:讓匹配到的 “hello” 高亮顯示,通常是紅色,非常醒目
34.grep -q “success” file.txt && echo “Found!”
作用:-q 靜默模式。不輸出任何結果,只根據是否找到而設置退出狀態。這里如果找到 “success”,就執行 echo “Found!”。常用于腳本判斷
35.grep -s “hello” maybe_no_exist.txt
作用:-s 不顯示由于文件不存在或無權限而產生的錯誤信息。世界清靜了
36.grep -H “hello” *.txt
作用:強制顯示文件名,和 -h 相反。在某些情況下默認不顯示文件名時使用
37.ls -l | grep “^d”
作用:用 ls -l 列出文件詳情,然后 grep 只顯示行首是 ‘d’ 的,也就是只列出目錄
38.grep -P “\x68\x65\x6c\x6c\x6f” file.txt
作用:-P 使用Perl兼容的正則表達式,這里是用16進制碼搜索 “hello” 這個單詞,比較偏門但有時有用
39.grep -m 5 “info” huge_log.txt
作用:-m 限制匹配次數。只在巨大的日志文件里搜到前5個 “info” 就停止,防止輸出刷屏
40.grep -Z -r “secret” . | xargs -0 rm
作用:這是一個危險但能說明問題的例子。-Z 讓輸出以 \0 結尾,配合 xargs -0,可以遞歸找到所有包含 “secret” 的文件并刪除它們
希望這40個例子能讓你對 grep 的強大有一個立體的感受。記住,最好的學習方式就是打開終端,隨便找個文本文件,把這些命令一個一個敲進去試試看 !玩得開心




























