????????grep是Linux/Unix系統中一個非常強大的文本搜索工具,它的名字來源于"Global Regular Expression Print"(全局正則表達式打印)。grep命令用于在文件中搜索包含特定模式的行,并將匹配的行打印出來。
目錄
一、基本語法
二、常用選項
三、基本用法示例
在文件中搜索字符串
忽略大小寫搜索
顯示匹配行的行號
統計匹配行數
遞歸搜索目錄
反向匹配(顯示不包含模式的行)
搜索多個文件
使用通配符搜索多個文件
四、高級用法
使用正則表達式
顯示匹配行及其前后內容
搜索壓縮文件
管道結合使用
使用擴展正則表達式
高亮顯示匹配結果
五、實際應用場景
查找日志中的錯誤信息
統計代碼中某個函數出現的次數
查找包含特定IP地址的日志行
查找空行
查找非空行
在多文件中查找并顯示文件名
一、基本語法
grep [選項] 模式 [文件...]
二、常用選項
選項 | 描述 |
---|---|
-i | 忽略大小寫 |
-v | 反向匹配,顯示不包含模式的行 |
-n | 顯示匹配行的行號 |
-c | 只顯示匹配的行數 |
-l | 只顯示包含匹配項的文件名 |
-L | 只顯示不包含匹配項的文件名 |
-r ?或?-R | 遞歸搜索子目錄 |
-w | 匹配整個單詞 |
-A n | 顯示匹配行及其后n行 |
-B n | 顯示匹配行及其前n行 |
-C n | 顯示匹配行及其前后各n行 |
-E | 使用擴展正則表達式(等同于egrep) |
-F | 將模式視為固定字符串而非正則表達式(等同于fgrep) |
--color | 高亮顯示匹配部分 |
三、基本用法示例
-
在文件中搜索字符串
grep "search_pattern" file.txt
-
忽略大小寫搜索
grep -i "pattern" file.txt
-
顯示匹配行的行號
grep -n "pattern" file.txt
-
統計匹配行數
grep -c "pattern" file.txt
-
遞歸搜索目錄
grep -r "pattern" /path/to/directory
-
反向匹配(顯示不包含模式的行)
grep -v "pattern" file.txt
-
搜索多個文件
grep "pattern" file1.txt file2.txt
-
使用通配符搜索多個文件
grep "pattern" *.log
四、高級用法
-
使用正則表達式
grep "^start" file.txt # 匹配以"start"開頭的行 grep "end$" file.txt # 匹配以"end"結尾的行 grep "[0-9]" file.txt # 匹配包含數字的行
-
顯示匹配行及其前后內容
grep -A 2 "pattern" file2.txt # 顯示匹配行及后2行 grep -B 2 "pattern" file2.txt # 顯示匹配行及前2行 grep -C 2 "pattern" file2.txt # 顯示匹配行及前后各2行
-
搜索壓縮文件
zgrep "pattern" file.gz # 搜索gzip壓縮文件 bzgrep "pattern" file.bz2 # 搜索bzip2壓縮文件
-
管道結合使用
cat file.txt | grep -v "exclude_"
-
使用擴展正則表達式
grep -E "pattern1|pattern2" file.txt # 匹配pattern1或pattern2
-
高亮顯示匹配結果
grep --color=auto "pattern" file.txt
五、實際應用場景
-
查找日志中的錯誤信息
grep -i "error" /var/log/syslog
-
統計代碼中某個函數出現的次數
grep -c "function_name" *.c
-
查找包含特定IP地址的日志行
grep "192\.168\.1\.100" /var/log/auth.log
-
查找空行
grep "^$" file.txt
-
查找非空行
grep -v "^$" file.txt
-
在多文件中查找并顯示文件名
grep -l "main" *.c