2021-05-12 14:32:11
適用於高階使用者的Linux Grep指南
任何管理Linux伺服器一段時間的人都熟悉“grep”命令。 借助Linux的“Everything is a file”理念,grep對於遍歷紀錄檔檔案,組態檔,檢查輸出檔案中的某些錯誤以及獲取匹配數量至關重要。 在本教學中,我將向您展示grep的一些高階用法,它們仍然非常有用。 這些在手冊頁中不難找到,但它們只是grep預設功能的擴充套件。
同時搜尋多個單詞
通常,grep的用法是這樣的:
grep 'pattern' filename
其中'pattern'是任何給定的模式或匹配的正規表示式。 但是,假設您有一個錯誤紀錄檔檔案並正在執行例行維護。 您希望檢查紀錄檔檔案中是否存在跨越各種源的某些關鍵字。 通常,您必須為每個短語使用單獨的grep表示式。
但是,我們可以使用“-E”引數輕鬆使用正規表示式。 首先,我們有一個名為“linuxidc-com”的檔案,其中包含以下內容:
假設我們要在此檔案中搜尋以下兩個短語:
linuxidc
linuxmi
grep -Ew 'linuxidc|linuxmi' linuxidc-com
有兩個標誌:
1.-E表示我們正在使用擴充套件正規表示式
2.-w意味著我們只想匹配整個單詞
為了使它更容易,我們可以將“grep -E”替換為“egrep”。 所以上面的命令變成:
egrep -w 'linuxidc|linuxmi' linuxidc-com
這裡是輸出:
我們可以根據需要匹配儘可能多的單詞。如果你想刪除“單詞”的要求,而只是想要一個直接的字串匹配,那麼你可以刪除“w”引數。
搜尋整個目錄以查詢匹配項並顯示檔名
我們通常認為grep搜尋檔案或來自另一個命令的特定輸出。但是,我們也可以使用它同時搜尋整個檔案目錄。
比如說,你有一堆分散在系統周圍的紀錄檔檔案。畢竟,許多軟體包都有自己的紀錄檔檔案位置。為了方便您,您可以建立一個新資料夾,其中包含指向您感興趣的所有各種紀錄檔檔案的符號連結。
現在,您可以使用“-R”命令與grep一起搜尋所有這些內容。首都“R”告訴grep包含符號連結。小“r”忽略預設情況下在命令列中找不到的符號連結。
例如,在以下範例中,我們在當前目錄中搜尋字串:
grep -r linuxidc .
末尾的點( .)表示當前目錄。 我們得到以下輸出:
您可以在下面看到,它還會以遞迴方式搜尋另一個模式匹配:
這對於同時搜尋一堆檔案非常有用。 輸出還會顯示包含匹配字串的檔案的名稱! 我個人喜歡這個帶有“-R”的解決方案,可以同時搜尋一組符號連結,以節省時間。
計算匹配行數
有時您想知道某個關鍵字出現在grep中的次數。 例如,如果您在網站檔案中搜尋某個蜘蛛,則需要計算包含特定使用者代理的行數。
為此,我們只需新增“-c”引數即可。 請記住,這會刪除grep的常規輸出,並且不再顯示單個匹配項。 例如,沒有“-c”引數:
grep rr linuxidc-com
我們得到一個簡單的事件列表。 加入“-c”:
grep -c rr linuxidc-com
我們得到了行數:
如您所見,它不再顯示每個事件。
Grep是一個非常強大的工具,它的功能多年來一直在增加。 我們可以建立複雜的正規表示式,甚至可以建立一個表示式來格式化檔案的輸出,使其更易於閱讀。 這些高階grep使用範例將讓您體驗可能的內容,並希望您自己深入研究手冊!
如果您喜歡高階grep命令的這篇文章,請通過社交媒體網路與您的朋友分享。 如果您對本教學有任何疑問,請在下面寫下評論。 謝謝!
相關文章