什麼是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 命令過濾文件列表,如下所示:
句法:
$ ls -l | grep -i “搜索詞”
例子:
$ ls -l | grep -i sample
此命令列出當前目錄中文件名中包含單詞“private”的所有文件。
在文件中搜索字符串
您可以使用 grep 命令從包含特定文本字符串的文件中獲取語句。
句法:
grep“字符串”文件名
例子:
$ grep “sample file” sampleFile.txt
我的示例文件 sampleFile.txt 包含字符串“samplefile”的語句,如上面的輸出所示。關鍵字和字符串在搜索結果中以彩色顯示。
在多個文件中搜索字符串
如果要從所有相同類型的文件中查找包含文本字符串的句子,最好使用 grep 命令。
語法 1:
$ grep “string” 文件名關鍵字 *
語法 2:
$ grep “字符串” * .extension
示例 1:
$ grep "sample file” sample*
此命令從文件名中包含關鍵字“sample”的所有文件中獲取包含字符串“samplefile”的所有語句。
示例 2:
$ grep "sample file” *.txt
此命令從所有擴展名為 .txt 的文件中獲取包含字符串“samplefile”的所有語句。
在文件中搜索字符串而不區分大小寫字母
幸運的是,在上面的示例中,我的文本字符串與示例文本文件相同。如果輸入以下命令,文件中的文本不是以大寫“sample”開頭的,所以搜索結果為nil。
$ grep "Sample file" *.txt
告訴 grep 忽略搜索字符串的大小寫,並使用 -i 選項根據字符串打印搜索結果。
句法:
$ grep -i “字符串” 文件名
例子:
$ grep -i "Sample file" *.txt
此命令從所有擴展名為 .txt 的文件中獲取包含字符串“samplefile”的所有語句。它不考慮搜索字符串是大寫還是小寫。
按正則表達式搜索
您可以使用 grep 命令使用 start 和 end 關鍵字指定正則表達式。輸出將是一個語句,其中包含指定的開始和結束關鍵字之間的整個表達式。這非常強大,因為您不必在搜索命令中編寫完整的表達式。
句法:
$ grep “startingKeyword. * EndingKeyword” 文件名
例子:
$ grep "starting.*.ending" sampleFile.txt
此命令從 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 命令之前,這可以節省大量瀏覽搜索結果的時間。