什麼是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 命令之前瀏覽整個搜索結果所浪費的大量時間。