在 Linux 中使用 grep 命令

什麼是grep?

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

所以他們說 GREP 代表全局正則表達式打印但是這個命令“grep”來自哪裡? grep 基本上派生自一個名為 ed 的非常簡單和古老的 Unix 文本編輯器的特定命令。 這是 ed 命令的運行方式:

克/重/磅

該命令的目的與我們通過 grep 搜索的意思非常相似。 此命令獲取文件中與特定文本模式匹配的所有行。

讓我們進一步探索 grep 命令。 在本文中,我們將解釋 grep 實用程序的安裝,並提供一些示例,您可以通過這些示例準確了解如何以及在何種情況下使用它。

我們已經在 Ubuntu 18.04 LTS 系統上運行了本文中提到的命令和過程。

安裝 grep

儘管默認情況下 grep 實用程序隨大多數 Linux 系統一起提供,但如果您的系統上未安裝它,則步驟如下:

通過 Dash 或 Ctrl+Alt+T 快捷方式打開您的 Ubuntu 終端。 然後以 root 身份輸入以下命令以通過 apt-get 安裝 grep:

$ sudo apt-get install grep

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

您可以通過以下命令檢查 grep 版本來驗證安裝:

$ grep --version

將 grep 命令與示例一起使用

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

搜索文件

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

句法:

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

例子:

$ ls -l | grep -i sample

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

在文件中搜索字符串

您可以通過 grep 命令從包含特定文本字符串的文件中獲取句子。

句法:

grep“字符串”文件名

例子:

$ grep “sample file” sampleFile.txt

我的示例文件 sampleFile.txt 包含具有字符串“示例文件”的句子,您可以在上面的輸出中看到。 關鍵字和字符串以彩色形式出現在搜索結果中。

在多個文件中搜索字符串

如果您想從所有相同類型的文件中搜索包含文本字符串的句子,grep 命令將為您服務。

語法 1:

$ grep “字符串” 文件名關鍵字*

語法 2:

$ grep “字符串” *.extension

示例 1:

$ grep "sample file” sample*

該命令將從文件名包含關鍵字“sample”的所有文件中獲取所有包含字符串“sample file”的句子。

示例 2:

$ grep "sample file” *.txt

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

在不考慮字符串大小寫的情況下搜索文件中的字符串

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

$ grep "Sample file" *.txt

讓我們告訴 grep 忽略搜索字符串的大小寫,並通過 -i 選項打印基於字符串的搜索結果。

句法:

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

例子:

$ grep -i "Sample file" *.txt

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

基於正則表達式搜索

通過 grep 命令,您可以指定帶有開始和結束關鍵字的正則表達式。 輸出將是包含您指定的開始和結束關鍵字之間的整個表達式的句子。 此功能非常強大,因為您無需在搜索命令中編寫整個表達式。

句法:

$ grep “startingKeyword.*endingKeyword” 文件名

例子:

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

此命令將從我在 grep 命令中指定的文件中打印包含表達式(從我的開始關鍵字開始並以我的結束關鍵字結束)的句子。

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

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

關鍵字符串後 N 行的語法:

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

例子:

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

這是我的示例文本文件的樣子:

這就是命令輸出的樣子:

它顯示了我在 grep 命令中指定的文件中的 3 行,包括包含搜索字符串的那一行。

關鍵字符串前 N 行的語法:

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

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

密鑰字符串周圍 N 行的語法:

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

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