grep 命令詳解(通俗版)

1. 基礎概念

grep 是 Linux 下的文本搜索工具,核心功能是從文件或輸入流中篩選出包含指定關鍵詞的行
它像“文本界的搜索引擎”,能快速定位關鍵信息,特別適合日志分析、代碼排查等場景。


2. 基礎語法
grep [選項] "搜索詞" 文件名

3. 常用選項與實例

① 簡單搜索
# 在 catalina.out 中查找包含 "ERROR" 的行
grep "ERROR" catalina.out# 示例輸出:
# 2023-10-25 14:00:10 ERROR NullPointerException...
# 2023-10-25 14:05:20 ERROR Database connection failed...

② 忽略大小寫(-i)
# 查找 "error"(不區分大小寫,匹配 ERROR/error/Error)
grep -i "error" catalina.out

③ 顯示行號(-n)
# 顯示匹配行及其行號(方便定位到文件具體位置)
grep -n "NullPointer" catalina.out# 示例輸出:
# 105:2023-10-25 14:00:10 ERROR NullPointerException...

④ 反向匹配(-v)
# 排除包含 "INFO" 的行(只顯示不匹配的行)
grep -v "INFO" catalina.out

⑤ 顯示上下文(-A/-B/-C)
# 顯示匹配行及其后5行(After)
grep -A 5 "OOM" catalina.out  # 適合查看堆棧信息# 顯示匹配行及其前3行(Before)
grep -B 3 "Timeout" catalina.out# 顯示匹配行前后各2行(Context)
grep -C 2 "WARN" catalina.out

⑥ 正則表達式(-E)
# 使用正則匹配(例如:以 "ERROR" 開頭或包含 "404")
grep -E "^ERROR|404" catalina.out# 等價于:
egrep "^ERROR|404" catalina.out

⑦ 統計匹配次數(-c)
# 統計 "ERROR" 出現的總次數
grep -c "ERROR" catalina.out# 統計每個文件的匹配次數(多文件時)
grep -c "404" access.log error.log

⑧ 遞歸搜索目錄(-r)
# 在 /var/log 目錄下所有文件中搜索 "Timeout"
grep -r "Timeout" /var/log# 同時顯示文件名和行號
grep -rn "Timeout" /var/log

⑨ 匹配整詞(-w)
# 只匹配完整單詞 "Error"(避免匹配到 "Errors" 或 "ErrorCode")
grep -w "Error" catalina.out

4. 實戰場景

場景1:快速定位 Tomcat 啟動失敗原因
# 查看啟動日志中的錯誤
grep -A 20 "ERROR" catalina.out | less
場景2:統計接口 500 錯誤次數
# 在訪問日志中統計 500 狀態碼
grep " 500 " access.log | wc -l
場景3:過濾無關日志
# 只看 ERROR 和 WARN,排除 INFO 和 DEBUG
grep -E "ERROR|WARN" catalina.out | grep -v "INFO\|DEBUG"
場景4:搜索指定時間段的日志
# 先按時間截取日志,再過濾關鍵詞
sed -n '/2023-10-25 14:00:/,/2023-10-25 15:00:/p' catalina.out | grep "ERROR"

5. 性能技巧

  • 大文件搜索:先用 grep 過濾,再用其他命令處理,避免內存溢出。
    grep "ERROR" huge.log | awk '{print $1}'  # 先過濾再提取列
    
  • 壓縮文件搜索:無需解壓,直接使用 zgrep
    zgrep "404" access.log.gz
    

總結

grep 是 Linux 文本處理的瑞士軍刀,核心能力 = 關鍵詞搜索 + 正則匹配
掌握常用選項后,可以快速解決以下問題:

  1. 日志分析:定位錯誤、統計異常
  2. 代碼調試:查找函數調用、追蹤變量
  3. 數據清洗:過濾無效數據、提取關鍵字段

記住萬能公式
grep [選項] "搜索詞" 文件 | 其他命令
(如結合 awksortwc 等進一步處理結果)

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

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

相關文章

JSVMP逆向實戰:原理分析與破解思路詳解

引言 在當今Web安全領域,JavaScript虛擬機保護(JSVMP)技術被廣泛應用于前端代碼的保護和反爬機制中。作為前端逆向工程師,掌握JSVMP逆向技術已成為必備技能。本文將深入剖析JSVMP的工作原理,并分享實用的逆向破解思路…

【youcans論文精讀】弱監督深度檢測網絡(Weakly Supervised Deep Detection Networks)

歡迎關注『youcans論文精讀』系列 本專欄內容和資源同步到 GitHub/youcans 【youcans論文精讀】弱監督深度檢測網絡 WSDDN 0. 弱監督檢測的開山之作0.1 論文簡介0.2 WSDNN 的步驟0.3 摘要 1. 引言2. 相關工作3. 方法3.1 預訓練網絡3.2 弱監督深度檢測網絡3.3 WSDDN訓練3.4 空間…

基于Contiue來閱讀open-r1中的GRPO訓練代碼

原創 快樂王子HP 快樂王子AI說 2025年04月03日 23:54 廣東 前面安裝了vscode[1]同時也安裝了Coninue的相關插件[2],現在想用它們來閱讀一下open-r1項目的代碼[3]。 首先,從啟動訓練開始(以GRPO為例子) 第一步,使用TRL的vLLM后端…

JVM深入原理(六)(二):雙親委派機制

目錄 6.5. 類加載器-雙親委派機制 6.5.1. 雙親委派機制-作用 6.5.2. 雙親委派機制-工作流程 6.5.3. 雙親委派機制-父加載器 6.5.4. 雙親委派機制-面試題 6.5.5. 雙親委派機制-代碼主動加載一個類 6.6. 類加載器-打破雙親委派機制 6.6.1. 打破委派-ClassLoader原理 6.6.…

Linux 文件系統超詳解

一.磁盤 磁盤是計算機的主要存儲介質,它可以存儲大量二進制數據,即使斷電后也可以保證數據不會丟失。下面我們將了解磁盤的物理結構、存儲結構以及邏輯結構。 磁盤的存儲結構 1. 磁盤尋址的時候,基本單位既不是bit也不是byte,而…

2025年大模型與Transformer架構:重塑AI未來的科技革命

引言:一場關于智能的革命 想象一下,當你向一個虛擬助手提問時,它不僅能夠準確理解你的需求,還能生成一段流暢且富有邏輯的回答;或者當你上傳一張模糊的照片時,系統可以快速修復并生成高清版本——這一切的…

GO語言學習(16)Gin后端框架

目錄 ??前言 1.什么是前端?什么是后端?🌀 2.Gin框架介紹 🌷 3.Gin框架的基本使用 -Hello,World例子🌷 🌿入門示例 - Hello,World 💻補充(一些常用的網…

深入解析 Git Submodule:從基礎到高級操作指南

深入解析 Git Submodule:從基礎到高級操作指南 一、Git Submodule 是什么? git submodule 是 Git 提供的一個強大功能,允許在一個 Git 倉庫(主倉庫)中嵌入另一個獨立的 Git 倉庫(子模塊)。主倉…

電子電氣架構 --- EEA演進與芯片架構轉移

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

如何用deepseek生成流程圖

軟件準備: 在線流程圖【Flowchart Maker & Online Diagram Software】或【process on】 步驟: 1、用 【DeepSeek】生成 結構化內容(Mermaid文件) 1.1、向deepseek輸入指令:【幫我用mermaind寫出“某某”的具體…

【華為OD技術面試真題 - 技術面】- Java面試題(17)

華為OD面試真題精選 專欄:華為OD面試真題精選 目錄: 2024華為OD面試手撕代碼真題目錄以及八股文真題目錄 文章目錄 華為OD面試真題精選虛擬機分區1. **虛擬磁盤分區**2. **虛擬機的內存分區**3. **CPU分配**4. **虛擬網絡分區**5. **存儲虛擬化和分區**6. **虛擬機分區管理**…

Linux | I.MX6ULL內核及文件系統源碼結構(7)

01 類型 描述 備注 ARM 交叉編譯器 版本:4.9.4 提供軟件工具 Uboot 版本:2016.03 提供源碼 支持LCD顯示;支持網口; 支持 EMMC,NAND FLASH; 支持環境變量修改保存 Linux 內核 版本:4.1.15 提供…

0基礎入門scrapy 框架,獲取豆瓣top250存入mysql

一、基礎教程 創建項目命令 scrapy startproject mySpider --項目名稱 創建爬蟲文件 scrapy genspider itcast "itcast.cn" --自動生成 itcast.py 文件 爬蟲名稱 爬蟲網址 運行爬蟲 scrapy crawl baidu(爬蟲名) 使用終端運行太麻煩了,而且…

鴻蒙NEXT小游戲開發:猜小球

1. 引言 “猜小球”是一個經典的益智游戲,通常由一名表演者和多名參與者共同完成。表演者會將一個小球放在一個杯子下面,然后將三個杯子快速地交換位置,參與者則需要猜出最終哪個杯子下面有小球。本文將介紹如何使用HarmonyOS NEXT技術&…

網絡購物謹慎使用手機免密支付功能

在數字經濟蓬勃發展的當下,“免密支付”成為許多人消費時的首選支付方式。 “免密支付”的存在有其合理性。在快節奏的現代生活中,時間愈發珍貴,每節省一秒都可能帶來更高的效率。以日常通勤為例,上班族乘坐交通工具時&#xff0c…

記錄 | Android getWindow().getDecorView().setSystemUiVisibility(...)設置狀態欄屬性

純純的一邊開發一邊學習,是小白是菜鳥,單純的記錄和學習,大神勿噴,理解有錯望指正~ getWindow().getDecorView().setSystemUiVisibility(…) 該方法用于控制系統 UI(如狀態欄、導航欄)的可見性…

java虛擬機---JVM

JVM JVM,也就是 Java 虛擬機,它最主要的作用就是對編譯后的 Java 字節碼文件逐行解釋,翻譯成機器碼指令,并交給對應的操作系統去執行。 JVM 的其他特性有: JVM 可以自動管理內存,通過垃圾回收器回收不再…

VectorBT:使用PyTorch+LSTM訓練和回測股票模型 進階四

VectorBT:使用PyTorchLSTM訓練和回測股票模型 進階四 本方案融合 LSTM 時序預測與動態風險控制。系統采用混合架構,離線訓練構建多尺度特征工程和雙均線策略,結合在線增量更新持續優化模型。技術要點包括三層特征篩選、波動率動態倉位管理、混…

前端中rem,vh,vw

1. rem&#xff08;Root EM&#xff09; 參照對象 基準&#xff1a;相對于 根元素&#xff08;<html>&#xff09;的 font-size 計算。 默認情況下&#xff0c;瀏覽器的根 font-size 為 16px&#xff08;即 1rem 16px&#xff09;&#xff0c;但可通過 CSS 修改&#…

詳解 MySQL 常見的存儲引擎及它們之間的區別

MySQL 支持多種存儲引擎&#xff0c;每種引擎針對不同的應用場景提供了特定的特性和優化。下面是幾種常見的存儲引擎以及它們之間的主要區別&#xff1a; 常見存儲引擎 1. InnoDB&#xff08;重點&#xff09; 事務支持&#xff1a; 完全支持 ACID 事務&#xff0c;確保數據一…