Linux grep 命令詳解:常用選項、參數及實戰場景

一、grep 命令簡介
`grep`(Global Regular Expression Print)是 Linux 中用于文本搜索的核心工具,支持正則表達式,能快速定位文件中的目標內容。

?二、常用選項(Options)及英文對照
| 選項 | 英文全稱 | 作用 |
|------|----------|------|
| `-i` | `--ignore-case` | 忽略大小寫 |
| `-c` | `--count` | 統計匹配行數 |
| `-n` | `--line-number` | 顯示行號 |
| `-o` | `--only-matching` | 僅輸出匹配內容 |
| `-A` | `--after-context=N` | 顯示匹配行后 N 行 |
| `-B` | `--before-context=N` | 顯示匹配行前 N 行 |
| `-C` | `--context=N` | 顯示匹配行前后各 N 行 |
| `-r` | `--recursive` | 遞歸搜索目錄 |
| `-w` | `--word-regexp` | 匹配完整單詞 |
| `-E` | `--extended-regexp` | 啟用擴展正則表達式 |

三、實戰場景與示例

1. 統計文件中 `error` 出現的次數(忽略大小寫)

說明:統計 `app.log` 中所有包含 `error` 的行數(不區分大小寫)。

命令:

grep -i -c 'error'?app.log

2. 搜索壓縮文件中的特定 JSON 字符串
說明:
在 `logs.zip` 壓縮包中搜索包含 `系統忙,請稍后再試'?的文件,并統計匹配次數。
命令:


zgrep -o -c '系統忙,請稍后再試'?*.zip
# 注意:`zgrep` 是專門用于搜索壓縮文件的工具
?

3. 顯示關鍵詞前后兩行的上下文
?說明:
在 `debug.log` 中搜索 `ConnectionTimeout` 并顯示匹配行及其前后各 2 行的內容。
?命令:


grep -C 2 'ConnectionTimeout'?debug.log
#注意:C是大寫的,如果想要看前兩行用-B? 2,后3行 -A 3

4. 統計時間段內字符串的出現次數
?說明:
在 `access.log` 中統計 `2023-10-01 14:00` 至 `2023-10-01 15:00` 內 `GET /api/user` 的請求次數。
命令:


awk '/2023-10-01 14:[0-5][0-9]/ && /2023-10-01 15:00/ && /GET \ /api\ /user/ {count++} END {print count}' access.log
說明:結合 `awk` 處理時間范圍
?

4.1 查詢日志按時間排序,可以先用 sed 提取時間段內的行,再通過 grep 統計字符串:
sed -n '/00:00:00/,/01:55:00/p' info.log | grep -c 'GET\? \/api\/user'?

?四、更多高頻用法

?1. 遞歸搜索目錄并顯示行號
?說明:
在 `/var/log` 目錄及其子目錄中遞歸搜索 `Permission denied`,并顯示文件名和行號。
命令:

grep -r -n "Permission denied" /var/log

?2. 精確匹配單詞(避免部分匹配)
說明:
在 `config.txt` 中匹配完整的單詞 `port`(避免匹配 `export` 或 `portal`)。
命令:

grep -w 'port'?config.txt

五、注意事項
1. **正則表達式轉義**:若搜索內容包含特殊字符(如 `.`、`*`),需用 `\` 轉義。 ?
??

grep "192\.168\.1\.1" access.log



2. 性能優化:大文件搜索時,可結合 `-m NUM` 限制匹配次數。

?六、總結
掌握 `grep` 的常用選項和組合技巧,能大幅提升日志分析、故障排查的效率。靈活運用正則表達式和上下文控制選項,可覆蓋絕大多數文本搜索場景!

推薦工具: ?
- 復雜正則表達式測試:[RegExr](https://regexr.com/) ?
- 日志分析進階:`awk`、`sed`

希望這篇博客能幫助您快速掌握 `grep` 的核心用法!如果有其他問題,歡迎評論區交流! 🚀

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81495.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81495.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81495.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java-EE進階】SpringBoot針對某個IP限流問題

目錄 簡介 1. 使用Guava的RateLimiter實現限流 添加Guava依賴 實現RateLimiter限流邏輯 限流管理類 控制器中應用限流邏輯 2. 使用計數器實現限流 限流管理類 控制器中應用限流邏輯 簡介 針對某個IP進行限流以防止惡意點擊是一種常見的反爬蟲和防止DoS的措施。限流策…

Linux問題排查-找到偷偷寫文件的進程

在 Linux 系統中,若要通過已修改的文件找到修改該文件的進程 PID,可以結合以下方法分析,具體取決于文件是否仍被進程打開或已被刪除但句柄仍存在: 一、文件仍被進程打開(未刪除) 如果文件當前正在被某個進…

More Effective C++:改善編程與設計(下)

目錄 條款19:了解臨時對象的來源 條款20:協助完成“返回值優化” 條款21:利用重載技術避免隱式類型轉換 條款22:考慮以操作符復合形式(op)取代其獨身形式(op) 條款23:考慮使用其他程序庫 條款24:了解virtual functions、mul…

VTK|類似CloudCompare的比例尺實現2-vtk實現

文章目錄 實現類頭文件實現類源文件調用邏輯關鍵問題縮放限制問題投影模式項目git鏈接實現類頭文件 以下是對你提供的 ScaleBarController.h 頭文件添加詳細注釋后的版本,幫助你更清晰地理解每個成員和方法的用途,尤其是在 VTK 中的作用: #ifndef SCALEBARCONTROLLER_H #de…

PostgreSQL 聯合索引生效條件

最近面試的時候,總會遇到一個問題 在 PostgreSQL 中,聯合索引在什么條件下會生效? 特此記錄~ 前置信息 數據庫版本 PostgreSQL 14.13, compiled by Visual C build 1941, 64-bit 建表語句 CREATE TABLE people (id SERIAL PRIMARY KEY,c…

SpringBoot項目里面發起http請求的幾種方法

在Spring Boot項目中發起HTTP請求的方法 在Spring Boot項目中,有幾種常用的方式可以發起HTTP請求,以下是主要的幾種方法: 1. 使用RestTemplate (Spring 5之前的主流方式) // 需要先注入RestTemplate Autowired private RestTemplate restT…

《Python星球日記》 第90天:微調的概念以及如何微調大模型?

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 目錄 一、微調原理1. 什么是大模型微調?2. 為什么需要微調?3. 微調的基本流程4. 微調策略分類二、LoRA(Low-Rank Adaptation)技術詳解1. LoRA的核…

機器學習-人與機器生數據的區分模型測試 - 模型融合與檢驗

模型融合 # 先用普通Pipeline訓練 from sklearn.pipeline import Pipeline#from sklearn2pmml.pipeline import PMMLPipeline train_pipe Pipeline([(scaler, StandardScaler()),(ensemble, VotingClassifier(estimators[(rf, RandomForestClassifier(n_estimators200, max_de…

怎樣免費開發部署自己的網站?

要免費開發自己的網站,您可以根據自己的技術水平和需求選擇以下兩種主要方式: 零基礎用戶:建議使用如WordPress.com、Weebly、Strikingly等平臺,快速搭建網站。 有一定技術基礎的用戶:可選擇自行開發網站,…

調用百度云API機器翻譯

新建Python文件,叫 text_translator.py 輸入 import requests import jsonAPI_KEY "glYiYVF2dSc7EQ8n78VDRCpa" # 替換為自己的API Key SECRET_KEY "kUlhze8OQZ7xbVRp" # 替換為自己的Secret Keydef main():# 選擇翻譯方向while True:di…

OpenAI與微軟洽談新融資及IPO,Instagram因TikTok流失四成用戶

OpenAI與微軟洽談新融資及IPO 據悉,OpenAI 正與微軟洽談新融資及籌備 IPO,關鍵問題是微軟在 OpenAI 重組后的股權比例。微軟已投資超 130 億美元,雙方修訂 2019 年合同,微軟擬棄部分股權換新技術訪問權。OpenAI 上周放棄了有爭議轉…

git工具使用詳細教程-------命令行和TortoiseGit圖形化

下載 git下載地址:https://git-scm.com/downloads TortoiseGit(圖形化工具)下載地址:https://tortoisegit.org/download/ 認識git結構 工作區:存放代碼的地方 暫存區:臨時存儲,將工作區的代碼…

構建RAG混合開發---PythonAI+JavaEE+Vue.js前端的實踐

7GB顯存如何部署bf16精度的DeepSeek-R1 70B大模型?-CSDN博客 服務容錯治理框架resilience4j&sentinel基礎應用---微服務的限流/熔斷/降級解決方案-CSDN博客 conda管理python環境-CSDN博客 快速搭建對象存儲服務 - Minio,并解決臨時地址暴露ip、短…

【Java ee初階】jvm(3)

一、雙親委派機制(類加載機制中,最經常考到的問題) 類加載的第一個環節中,根據類的全限定類名(包名類名)找到對應的.class文件的過程。 JVM中進行類加載的操作,需要以來內部的模塊“類加載器”…

wps excel將表格輸出pdf時所有列在一張紙上

記錄:wps excel將表格輸出pdf時所有列在一張紙上 1,調整縮放比例,或選擇將所有列打印在一頁 2,將表格的所有鋪滿到這套虛線

分布式微服務系統架構第134集:筆記1運維服務器經驗,高并發,大數據量系統

加群聯系作者vx:xiaoda0423 倉庫地址:https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ https://github.com/webVueBlog/fastapi_plus https://webvueblog.github.io/JavaPlusDoc/ ? 一、查看端口是否被占用的常用命令 1?? lsof 命令&…

IS-IS 中間系統到中間系統

前言: 中間系統到中間系統IS-IS(Intermediate System to Intermediate System)屬于內部網關協議IGP(Interior Gateway Protocol),用于自治系統內部 IS-IS也是一種鏈路狀態協議,使用最短路徑優先…

前端安全:XSS、CSRF 防御與最佳實踐

引言 隨著互聯網應用的普及,前端安全問題日益凸顯。作為開發者,了解并防范常見的安全威脅至關重要。本文將深入探討兩種最常見的前端安全威脅:跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)&#xff…

uniapp 彈窗封裝(上、下、左、右、中五個方位)

無腦復制即可&#xff01;&#xff01;&#xff01; <template><view><viewv-if"mask"class"tui-drawer-mask":class"{ tui-drawer-mask_show: visible }":style"{ zIndex: maskZIndex }"tap"handleMaskClick&qu…

Axure制作可視化大屏動態滾動列表教程

在可視化大屏設計中&#xff0c;動態滾動列表是一種常見且實用的展示方式&#xff0c;能夠有效地展示大量信息。本文將詳細介紹如何使用Axure制作一個動態滾動的列表展示模塊。 一、準備工作 打開Axure軟件&#xff1a;確保你已經安裝并打開了Axure RP軟件。創建新項目&#x…