如何在 Debian 10 上使用 grep 命令

Grep 代表全局正則表達式打印。 它是一個很有用的命令,被 Linux 系統工程師廣泛使用,在針對常規文件和系統中搜索字符串或模式時。

在本文中,我將通過大量示例來演示 grep 命令的用法。 我已經在 Debian 10 機器上測試了所有命令和示例。

先決條件

您需要擁有一台具有 root 權限的 Debian 10 機器。

在 Debian 10 上安裝 grep 命令

默認情況下,grep 安裝在包括 Debian 10 在內的大多數係統上。如果沒有安裝,請打開終端並使用 root 權限發出以下命令。

apt-get 安裝 grep

當系統要求您確認時,按 y,然後從鍵盤輸入。 等待安裝完成。

由於我的機器上已經安裝了 grep,請查看上面的屏幕截圖。 讓我們通過在終端上運行以下命令來檢查它的版本。

grep –version

它還應該返回版本以及其他詳細信息,如下所示。

使用 grep 命令

一旦我們的機器上有 grep 命令可用,我們就可以使用它了。

搜索系統中的特定文件或目錄

當您要搜索或定位系統中的特定文件時,該命令的語法應如下所示。

ls -l <​​pathofdirectorytosearch> | grep -i “文件或目錄名”

我想在 /etc/ 中搜索網絡目錄。 完整的命令應如下所示。

ls -l / etc / | grep -i “網絡”

‘i’ 選項忽略大小寫敏感。 因此,它應該將網絡、網絡或網絡視為相似。

下面是示例輸出。

使用 grep 搜索文件名

假設我想搜索位於 /etc/network/ 的“interfaces.d”文件,您必須運行以下命令。

ls -l /etc/network/ | grep -i “interfaces.d”

使用 grep 搜索文件夾名稱

如果要查找的單詞包含空格,則必須用雙引號將其包含在內。 假設我們正在搜索“network daemon”,上面的命令應該如下所示。

ls -l /etc/network/ | grep -i “接口守護進程”

用grep搜索一個完整的詞

您可能已經註意到,grep 會返回包括“網絡”在內的各種結果,例如networking、networked、networking 或abcnetworking 等。如果您想限制搜索以包含該特定詞,則必須使用-w 選項,如下所示。

ls -l /etc/ | grep -i -w 網絡

下面是示例輸出。

用grep搜索一個完整的詞

搜索文件中的特定文本

我們有一個案例,當您有一個大文件並且想要搜索特定文本時。 命令的語法應如下所示。

grep – i “textyouwanttosearch” “filenameandpath”

假設我想在位於當前目錄內的 test.txt 中搜索單詞“fox”。 在終端上運行以下命令。

grep -i “fox” test.txt

下面是示例輸出,它僅返回文件中包含單詞“fox”的那些行。

使用 grep 在文件中搜索文本

執行遞歸搜索(在多個文件中搜索)

如果要從目錄內的大量文件和子目錄中搜索文本,可以使用 -r 選項執行遞歸研究。

grep -i -r “狐狸”

下面是示例輸出,顯示單詞 fox 出現在所示行中的 test.txt 和 tree.txt 文件中。

遞歸搜索

您還可以提供目錄路徑,它將搜索該目錄及其子目錄中的所有文件。

假設我想對 /etc/ 及其子目錄中的文本“interfaces”進行遞歸研究。 該命令應按如下方式執行。

grep -i -r 接口 /etc/

下面是示例輸出。

遞歸搜索示例

使用單個 grep 命令搜索兩個不同的單詞

您可以使用單個 egrep(grep 的變體)命令搜索兩個不同的單詞,如下所示。 假設我想使用 -r 選項在多個文件中搜索完整的單詞 fox 和 lazy 。 您必須在終端上運行以下命令。

egrep -w -r “狐狸|懶惰”

下面是示例輸出。

使用單個 grep 命令搜索兩個不同的單詞

編號與文本匹配的行

另一個有用的選項是 -n 對匹配文本的行進行編號。 以下是 example 說明如何使用 -n 選項。

grep -i -n “fox” test.txt

以下是對與單詞“fox”匹配的行進行編號的示例輸出。

編號與文本匹配的行

反轉搜索

這與我們上面所做的相反。 如果要返回不包含指定單詞的文本,可以使用 -v 選項。

下面是 example 演示 -v 選項的使用。

grep -v -i “fox” test.txt

下面是示例輸出。

反向grep搜索

以上所有選項(-n 等)也可以與 -v 選項一起應用。

計算比賽

如果您只想計算與特定文本匹配的次數,您可以使用 -c 選項。

讓我們數一下位於當前目錄內的 test.txt 中的“fox”這個詞。 在終端上運行以下命令。

grep -i -c fox test.txt

以下是執行上述命令後的示例輸出,顯示單詞 fox 在 test.txt 文件中匹配三次。

使用 grep 計算匹配項

顯示與特定文本匹配的文件名

如果您想找出包含您的特定單詞的文件,您可以將 -l 選項與 -r 一起使用,如下所示。 假設所有文件都位於您當前的目錄中,並且您正在搜索或匹配的特定單詞是“fox”。

grep -i -r -l 狐狸

下面是示例輸出,顯示單詞 fox 存在於 test.txt 以及子目錄和文件 asif.txt 中

顯示與特定文本匹配的文件名

只顯示匹配的文本

默認情況下,grep 顯示與您想要的文本或單詞匹配的整行。 如果您希望 grep 向您顯示匹配的單詞,您可以使用 -o 選項,如下所示。

grep -i -o fox test.txt

下面是示例輸出。

只顯示匹配的文本

顯示以特定單詞開頭的行

如果要檢索以特定單詞開頭的所有行,可以使用 ^ 運算符,如下所示。

假設您要返回所有以“unix”開頭的行,並且文件是位於當前目錄中的 log.txt。

在終端上運行以下命令。

grep -i “^unix” log.txt

下面是示例輸出。

顯示以特定單詞開頭的行

顯示以特定單詞結尾的行

如果要從以特定單詞結尾的文件中返回所有這些行,可以按如下方式使用 $ 運算符。 假設單詞是“linux”,並且您要搜索的文件是位於當前目錄中的 rev.txt。

在終端上運行以下命令。

grep -i “linux$” rev.txt

下面是示例輸出。

顯示以特定單詞結尾的行結論

所以這是我關於 grep 命令用法的教程。 我已經演示了大多數 grep 選項,這些選項最常用,您可能在日常工作中需要這些選項。 grep 命令有一些變體,包括 zgrep 等。您可以自己探索它們。