什麼是grep?

您今天掌握的 grep 實用程序是一個 Unix 工具,與 egrep 和 fgrep 實用程序屬於同一家族。這些是 Unix 工具,旨在對文件和文本執行迭代搜索任務。 您可以通過使用 grep 命令指定特定的搜索條件來搜索文件及其內容中的有用信息。

換句話說,據說 GREP 是 Global Regular Expression Printing 的縮寫,但是這個命令“grep”是從哪裡來的呢? grep 基本上源自一個非常簡單的舊 Unix 文本編輯器命令,稱為 ed。 ed 命令的機制如下。

克/重新/ p

此命令的目的與您使用 grep 搜索的內容非常相似。此命令獲取文件中與特定文本模式匹配的所有行。

讓我們仔細看看 grep 命令。本文介紹了 grep 實用程序的安裝並給出了一些示例。這使您可以準確了解如何以及在什麼情況下使用 grep 實用程序。

我在 Ubuntu 18.04 LTS 系統上運行了本文中描述的命令和步驟。

安裝 grep

大多數 Linux 系統都默認包含 grep 實用程序,但如果您的系統上沒有安裝它,則步驟如下:

使用破折號或 Ctrl + Alt + T 快捷鍵打開 Ubuntu 終端。然後以 root 身份輸入以下命令,通過 apt-get 安裝 grep。

$ sudo apt-get install grep

在安裝過程中提示輸入 ay/n 選項時輸入 y。然後 grep 實用程序安裝在您的系統上。

您可以通過檢查 grep 的版本來確認安裝。

$ grep --version

檢查 grep 命令的版本

使用 grep 命令和示例

最好通過展示一些可以使用它的場景來解釋 grep 命令。這裡有些例子。

搜索文件

如果要搜索包含特定關鍵字的文件名,可以使用 grep 命令過濾文件列表,如下所示:

句法:

$ ls -l | grep -i “搜索詞”

例子:

$ ls -l | grep -i sample

此命令列出當前目錄中文件名中包含單詞“private”的所有文件。

使用 grep 搜索文件

在文件中搜索字符串

您可以使用 grep 命令從包含特定文本字符串的文件中獲取語句。

句法:

grep“字符串”文件名

例子:

$ grep “sample file” sampleFile.txt

使用 grep 查找文件中的文本

我的示例文件 sampleFile.txt 包含字符串“samplefile”的語句,如上面的輸出所示。關鍵字和字符串在搜索結果中以彩色顯示。

在多個文件中搜索字符串

如果要從所有相同類型的文件中查找包含文本字符串的句子,最好使用 grep 命令。

語法 1:

$ grep “string” 文件名關鍵字 *

語法 2:

$ grep “字符串” * .extension

示例 1:

$ grep "sample file” sample*

在多個文件中搜索字符串

此命令從文件名中包含關鍵字“sample”的所有文件中獲取包含字符串“samplefile”的所有語句。

示例 2:

$ grep "sample file” *.txt

在多個文件中搜索字符串-示例 2

此命令從所有擴展名為 .txt 的文件中獲取包含字符串“samplefile”的所有語句。

在文件中搜索字符串而不區分大小寫字母

幸運的是,在上面的示例中,我的文本字符串與示例文本文件相同。如果輸入以下命令,文件中的文本不是以大寫“sample”開頭的,所以搜索結果為nil。

$ grep "Sample file" *.txt

使用區分大小寫的字符串進行搜索

告訴 grep 忽略搜索字符串的大小寫,並使用 -i 選項根據字符串打印搜索結果。

句法:

$ grep -i “字符串” 文件名

例子:

$ grep -i "Sample file" *.txt

使用 grep 命令進行不區分大小寫的搜索

此命令從所有擴展名為 .txt 的文件中獲取包含字符串“samplefile”的所有語句。它不考慮搜索字符串是大寫還是小寫。

按正則表達式搜索

您可以使用 grep 命令使用 start 和 end 關鍵字指定正則表達式。輸出將是一個語句,其中包含指定的開始和結束關鍵字之間的整個表達式。這非常強大,因為您不必在搜索命令中編寫完整的表達式。

句法:

$ grep “startingKeyword. * EndingKeyword” 文件名

例子:

$ grep "starting.*.ending" sampleFile.txt

在 grep 中使用正則表達式

此命令從 grep 命令指定的文件中輸出一個包含表達式(以startingKeyword 開頭並以endingKeyword 結尾)的語句。

在搜索字符串之後/之前顯示指定的行數

您可以使用 grep 命令在文件中的搜索字符串前後打印 N 行。搜索結果還包括包含搜索字符串的文本行。

鍵字符串後的 N 行語法:

$ grep -A “字符串”文件名

例子:

$ grep -A 3 -i "samplestring" sampleFile.txt

我的示例文本文件如下所示:

示例文本文件

命令輸出如下所示:

從 grep 命令指定的文件中,顯示包含搜索字符串的行在內的 3 行。

密鑰字符串前 N 行的語法:

$ grep -B “字符串”文件名

您還可以在文本字符串“周圍”搜索 N 行。這意味著文本字符串之前的 N 行和之後的 N 行。

圍繞鍵字符串的 N 行語法:

$ grep -C “字符串”文件名

您可以使用本文中描述的簡單示例來掌握 grep 命令。然後,您可以使用它來搜索可能包含文件或文件內容的過濾結果。在您掌握 grep 命令之前,這可以節省大量瀏覽搜索結果的時間。