文章目錄
- 一、基本語法
- 二、常用選項及示例
- 1. 基本匹配:查找包含某字符串的行
- 2. 忽略大小寫匹配 -i
- 3. 顯示行號 -n
- 4. 遞歸查找目錄下的文件 -r 或 -R
- 5. 僅顯示匹配的字符串 -o
- 6. 使用正則表達式 -E(擴展)或 egrep
- 7. 顯示匹配前后行 -A, -B, -C
- 8. 統計匹配的行數 -c
- 9. 僅顯示文件名 -l(小寫 L)
- 10. 僅顯示不匹配的行 -v
- 11. 匹配整詞 -w
- 12. 匹配整行 -x
- 13. 查找多個關鍵字 -e
- 14. 在輸出中高亮匹配內容 --color
- 15. 查找二進制文件中的字符串 -a
- 三、實用技巧合集
- 1. 查找所有包含 IPv4 地址的行
- 2. 排除某些文件類型
- 3. 將結果輸出到新文件
- 四、總結
grep(Global Regular Expression Print)是 Linux/Unix 中非常強大的文本搜索工具,用于查找符合條件的字符串。它支持正則表達式、遞歸搜索、高亮顯示等功能,是開發、運維人員的常用工具之一。
本文將全面介紹 grep 命令的常用選項,并結合示例幫助你掌握其使用技巧。
一、基本語法
grep [選項] '模式' 文件
二、常用選項及示例
1. 基本匹配:查找包含某字符串的行
grep "main" hello.c
說明:查找 hello.c 文件中所有包含 main 的行。
2. 忽略大小寫匹配 -i
grep -i "hello" example.txt
說明:無論大小寫,匹配 hello、Hello、HELLO 等。
3. 顯示行號 -n
grep -n "return" hello.c
說明:顯示每一行匹配內容所在的行號,便于定位。
4. 遞歸查找目錄下的文件 -r 或 -R
grep -r "TODO" ./src/
說明:遞歸搜索 ./src/ 目錄下所有文件中包含 TODO 的行。
5. 僅顯示匹配的字符串 -o
grep -o "[0-9]\{3\}-[0-9]\{4\}" phones.txt
說明:只輸出匹配的電話號碼格式(如 123-4567),不顯示整行。
6. 使用正則表達式 -E(擴展)或 egrep
grep -E "jpg|png|gif" files.txt
或者
egrep "jpg|png|gif" files.txt
說明:查找包含 jpg、png 或 gif 的行。
7. 顯示匹配前后行 -A, -B, -C
grep -A 2 "error" log.txt
說明:顯示匹配到 error 的行及其后面兩行。
grep -B 2 "error" log.txt
說明:顯示匹配行及其前兩行。
grep -C 2 "error" log.txt
說明:顯示匹配行以及前后各兩行。
8. 統計匹配的行數 -c
grep -c "include" hello.c
說明:統計包含 include 的行數。
9. 僅顯示文件名 -l(小寫 L)
grep -l "main" *.c
說明:列出所有包含 main 的 .c 文件名。
10. 僅顯示不匹配的行 -v
grep -v "^#" config.txt
說明:顯示不以 # 開頭的行(忽略注釋)。
11. 匹配整詞 -w
grep -w "int" hello.c
說明:只匹配單獨出現的 int,不會匹配 print 或 integer。
12. 匹配整行 -x
grep -x "int main()" hello.c
說明:僅當整行完全匹配 int main() 時才顯示。
13. 查找多個關鍵字 -e
grep -e "error" -e "fail" log.txt
說明:匹配包含 error 或 fail 的行。
14. 在輸出中高亮匹配內容 --color
grep --color "main" hello.c
說明:將 main 高亮顯示,方便快速識別。
15. 查找二進制文件中的字符串 -a
grep -a "PNG" image.png
說明:將二進制文件當作文本處理,可用于檢查文件頭等。
三、實用技巧合集
1. 查找所有包含 IPv4 地址的行
grep -Eo "[0-9]{1,3}(\.[0-9]{1,3}){3}" access.log
2. 排除某些文件類型
grep -r --exclude="*.o" "malloc" .
3. 將結果輸出到新文件
grep "define" config.h > defines.txt
四、總結
選項 含義
-i 忽略大小寫
-n 顯示行號
-v 反向匹配
-c 統計匹配行數
-l 只顯示文件名
-r 遞歸查找目錄
-o 僅輸出匹配部分
-A/-B/-C 顯示匹配前后行
–color 高亮顯示
-E / egrep 擴展正則
掌握 grep,你就擁有了一把在文本中快速定位問題的“放大鏡”。無論是日志分析、源碼檢索,還是數據提取,grep 都能大大提高你的效率。