linux中grep命令的用法

来源:https://www.cnblogs.com/WebLinuxStudy/archive/2019/08/21/11391373.html
-Advertisement-
Play Games

作為linux中最為常用的三大文本(awk,sed,grep)處理工具之一,掌握好其用法是很有必要的。 首先談一下grep命令的常用格式為:grep [選項] ”模式“ [文件] grep家族總共有三個:grep,egrep,fgrep。 常用選項: -E :開啟擴展(Extend)的正則表達式。 ...


作為linux中最為常用的三大文本(awk,sed,grep)處理工具之一,掌握好其用法是很有必要的。

首先談一下grep命令的常用格式為:grep  [選項]  ”模式“  [文件]

grep家族總共有三個:grep,egrep,fgrep。

常用選項:

  -E :開啟擴展(Extend)的正則表達式。

  -i :忽略大小寫(ignore case)。

  -v :反過來(invert),只列印沒有匹配的,而匹配的反而不列印。

  -n :顯示行號

  -w :被匹配的文本只能是單詞,而不能是單詞中的某一部分,如文本中有liker,而我搜尋的只是like,就可以使用-w選項來避免匹配liker

  -c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內容,註意如果同時使用-cv選項是顯示有多少行沒有被匹配到。

  -o :只顯示被模式匹配到的字元串。

  --color :將匹配到的內容以顏色高亮顯示。

  -A  n:顯示匹配到的字元串所在的行及其後n行,after

  -B  n:顯示匹配到的字元串所在的行及其前n行,before

  -C  n:顯示匹配到的字元串所在的行及其前後各n行,context

   

   

 

 

模式部分:

  1、直接輸入要匹配的字元串,這個可以用fgrep(fast grep)代替來提高查找速度,比如我要匹配一下hello.c文件中printf的個數:fgrep  -c  "printf"  hello.c

  2、使用基本正則表達式,下麵談關於基本正則表達式的使用:

    匹配字元:

      . :任意一個字元。

      [abc] :表示匹配一個字元,這個字元必須是abc中的一個。

      [a-zA-Z] :表示匹配一個字元,這個字元必須是a-z或A-Z這52個字母中的一個。

      [^123] :匹配一個字元,這個字元是除了1、2、3以外的所有字元。

      對於一些常用的字元集,系統做了定義:

      [A-Za-z] 等價於 [[:alpha:]]

      [0-9] 等價於 [[:digit:]]

      [A-Za-z0-9] 等價於 [[:alnum:]]

      tab,space 等空白字元 [[:space:]]

      [A-Z] 等價於 [[:upper:]]

      [a-z] 等價於 [[:lower:]]

      標點符號 [[:punct:]]

      

 

 

    匹配次數:

      \{m,n\} :匹配其前面出現的字元至少m次,至多n次。
      \? :匹配其前面出現的內容0次或1次,等價於\{0,1\}。
      * :匹配其前面出現的內容任意次,等價於\{0,\},所以 ".*" 表述任意字元任意次,即無論什麼內容全部匹配。

      

 

 

 

    位置錨定:

      ^ :錨定行首

      $ :錨定行尾。技巧:"^$"用於匹配空白行。

      \b或\<:錨定單詞的詞首。如"\blike"不會匹配alike,但是會匹配liker

      \b或\>:錨定單詞的詞尾。如"\blike\b"不會匹配alike和liker,只會匹配like

      \B :與\b作用相反。

      

      

 

 

    分組及引用:

      \(string\) :將string作為一個整體方便後面引用

        \1 :引用第1個左括弧及其對應的右括弧所匹配的內容。

        \2 :引用第2個左括弧及其對應的右括弧所匹配的內容。

        \n :引用第n個左括弧及其對應的右括弧所匹配的內容。

        

 

 

  3、擴展的(Extend)正則表達式(註意要使用擴展的正則表達式要加-E選項,或者直接使用egrep):

    匹配字元:這部分和基本正則表達式一樣

 

    匹配次數

      * :和基本正則表達式一樣

      ? :基本正則表達式是\?,二這裡沒有\。

      {m,n} :相比基本正則表達式也是沒有了\。

      + :匹配其前面的字元至少一次,相當於{1,}。

 

    位置錨定:和基本正則表達式一樣。

 

    分組及引用

      (string) :相比基本正則表達式也是沒有了\。

        \1 :引用部分和基本正則表達式一樣。

        \n :引用部分和基本正則表達式一樣。

 

    或者

      a|b :匹配a或b,註意a是指 | 的左邊的整體,b也同理。比如 C|cat 表示的是 C或cat,而不是Cat或cat,如果要表示Cat或cat,則應該寫為 (C|c)at 。記住(string)除了用於引用還用於分組。

     

註1:預設情況下,正則表達式的匹配工作在貪婪模式下,也就是說它會儘可能長地去匹配,比如某一行有字元串 abacb,如果搜索內容為 "a.*b" 那麼會直接匹配 abacb這個串,而不會只匹配ab或acb。

註2:所有的正則字元,如 [ 、* 、( 等,若要搜索 * ,而不是想把 * 解釋為重覆先前字元任意次,可以使用 \* 來轉義。

 

下麵用一個練習來結束本次grep的學習:

在網路配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33 中檢索出所有的 IP

1、檢索出 0-255的範圍

2、由0-255的數字組合成IP

3、簡化

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先需要獲得Azure上App-service 的porfile. 登錄portal 選到app,點擊Get publish pofile 將得到一個 ****.PublishSettings,註意這個文件還不是最後真正用於發佈的配置,還需要做如下操作,得到一個真正的發佈配置, 在VS 中打開項目, ...
  • EasyX 是針對 Visual C++ 的繪圖庫,在初學 C 語言實現圖形和游戲編程、圖形學、分形學等需要繪圖實踐的領域有一定應用。 EasyX 庫在 Visual C++ 中模擬了 Turbo C 引用繪圖庫頭文件的指令 #include ,並針對 Windows 的特點做了相應擴展。 系統支持 ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 開源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control 如果覺得寫的還行,請點個 star 支持一下吧 歡迎前來交流探討: 企鵝群568015492 Nu ...
  • 1.HTML 或 2.Script:手動submit 3.UploadFileAction:Import是導入視圖 ...
  • 標題一、告別ASP.NET操作EXCEL的煩惱標題二、ASP.NET操作EXCEL 合併單元格 大全... cnblogs/hanzhaoxin/韓兆新的博客園ExcelReport第一篇:使用ExcelReport導出ExcelExcelReport第二篇:ExcelReport源碼解析Excel ...
  • 一、redis是什麼? 1.基於key-value的記憶體No sql 資料庫(非關係型資料庫) 2.讀寫性能非常好 二、redisd的數據類型有哪些?特點分別是什麼? 1)string 一個鍵對一個值2)list 一個鍵對多個值(有序 不唯一) 3)set 一個鍵對多個值(有序,唯一(去重)) 4) ...
  • 案例1:格式化重裝的電腦,接上耳機,音頻設置提示“麥克風未插入” 處理方法:更換新型號耳機調試正常後,更換原型號耳機使用正常 1、用新型號的耳機調試,跳出以下選擇框,選擇“麥克風”, 單擊“確定”; 2、如下圖,可以看到麥克風狀態是正常的 3、更換原型號耳機,Lync語音時麥克風和耳機功能恢復正常。 ...
  • 在學習awk之前我們應該都學過sed,grep,tr,cut等等命令,這些命令都是為了方便我們對Linux下文本和數據的處理,但是我們會發現很多時候這些命令並不能一下子就完全解決我們的需求,很多時候我們都需要使用管道符結合這些命令來使用,今天我就給大家介紹一個命令awk,他就能很好的解決我們對文本和 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...