分享Linux Grep高階使用者指南

大雄45 發表於 2021-10-19
Linux
導讀 任何管理 伺服器一段時間的人都熟悉“grep” 。 藉助Linux的“Everything is a file”理念,grep對於遍歷日誌檔案,配置檔案,檢查輸出檔案中的某些錯誤以及獲取匹配數量至關重要。 在本教程中,我將向您展示grep的一些高階用法,它們仍然非常有用。 這些在手冊頁中不難找到,但它們只是grep預設功能的擴充套件。
同時搜尋多個單詞

通常,grep的用法是這樣的:

grep 'pattern' filename

其中'pattern'是任何給定的模式或匹配的正規表示式。 但是,假設您有一個錯誤日誌檔案並正在執行例行維護。 您希望檢查日誌檔案中是否存在跨越各種源的某些關鍵字。 通常,您必須為每個短語使用單獨的grep表示式。

但是,我們可以使用“-E”引數輕鬆使用正規表示式。 首先,我們有一個名為“linuxidc-com”的檔案,其中包含以下內容:

分享Linux Grep高階使用者指南分享Linux Grep高階使用者指南

假設我們要在此檔案中搜尋以下兩個短語:

linuxidc
linuxmi

grep -Ew 'linuxidc|linuxmi' linuxidc-com

分享Linux Grep高階使用者指南分享Linux Grep高階使用者指南

有兩個標誌:
1.-E表示我們正在使用擴充套件正規表示式
2.-w意味著我們只想匹配整個單詞
為了使它更容易,我們可以將“grep -E”替換為“egrep”。 所以上面的 變成:

egrep -w 'linuxidc|linuxmi' linuxidc-com

分享Linux Grep高階使用者指南分享Linux Grep高階使用者指南

這裡是輸出:
我們可以根據需要匹配儘可能多的單詞。如果你想刪除“單詞”的要求,而只是想要一個直接的字串匹配,那麼你可以刪除“w”引數。

搜尋整個目錄以查詢匹配項並顯示檔名

我們通常認為grep搜尋檔案或來自另一個命令的特定輸出。但是,我們也可以使用它同時搜尋整個檔案目錄。比如說,你有一堆分散在系統周圍的日誌檔案。畢竟,許多軟體包都有自己的日誌檔案位置。為了方便您,您可以建立一個新資料夾,其中包含指向您感興趣的所有各種日誌檔案的符號連結。現在,您可以使用“-R”命令與grep一起搜尋所有這些內容。首都“R”告訴grep包含符號連結。小“r”忽略預設情況下在命令列中找不到的符號連結。

例如,在以下示例中,我們在當前目錄中搜尋字串:

grep -r linuxidc .

末尾的點( .)表示當前目錄。 我們得到以下輸出:

分享Linux Grep高階使用者指南分享Linux Grep高階使用者指南

您可以在下面看到,它還會以遞迴方式搜尋另一個模式匹配:
這對於同時搜尋一堆檔案非常有用。 輸出還會顯示包含匹配字串的檔案的名稱! 我個人喜歡這個帶有“-R”的解決方案,可以同時搜尋一組符號連結,以節省時間。

計算匹配行數

有時您想知道某個關鍵字出現在grep中的次數。 例如,如果您在網站檔案中搜尋某個蜘蛛,則需要計算包含特定使用者代理的行數。為此,我們只需新增“-c”引數即可。 請記住,這會刪除grep的常規輸出,並且不再顯示單個匹配項。 例如,沒有“-c”引數:

grep rr linuxidc-com

我們得到一個簡單的事件列表。 加入“-c”:

grep -c rr linuxidc-com

我們得到了行數:如您所見,它不再顯示每個事件。

Grep是一個非常強大的工具,它的功能多年來一直在增加。 我們可以建立複雜的正規表示式,甚至可以建立一個表示式來格式化檔案的輸出,使其更易於閱讀。 這些高階grep使用示例將讓您體驗可能的內容,並希望您自己深入研究手冊!

如果您喜歡高階grep命令的這篇文章,請通過社交媒體網路與您的朋友分享。 如果您對本教程有任何疑問,請在下面寫下評論。 謝謝!

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2838008/,如需轉載,請註明出處,否則將追究法律責任。