首頁 > 軟體

在Linux中使用grep命令圖文範例詳解

2020-06-16 16:42:44

什麼是grep?

我們今天要學習的grep實用程式是一個Unix工具,它與egrep和fgrep實用程式屬於同一系列。這些都是用於對檔案和文字執行重複搜尋任務的Unix工具。您可以通過grep命令指定特定搜尋條件來搜尋檔案及其內容以獲取有用的資訊。

所以他們說grep是全域性搜尋正規表示式並列印出匹配的行,但這個命令'grep'來自哪裡? grep基本上來源於一個名為ed的非常簡單和令人尊敬的Unix文字編輯器的特定命令。這是ed命令的用法:

g/re/p

該命令的目的與我們通過grep進行搜尋的含義非常相似。此命令獲取與特定文字模式匹配的檔案中的所有行。

讓我們進一步研究grep命令。在本文中,我們將解釋grep實用程式的安裝,並給出一些範例,通過這些範例,您可以確切地了解如何以及在何種情況下可以使用它。

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

安裝grep

雖然大多數Linux系統預設使用grep實用程式,但如果您的系統上沒有安裝它,以下是安裝過程:

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

linuxidc@linuxidc:~$ sudo apt-get install grep

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

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

linuxidc@linuxidc:~$ grep --version

將grep命令與範例一起使用

grep命令可以通過介紹可以使用它的一些場景來得到最好的解釋。 這裡有一些例子:

搜尋檔案

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

句法:

$ ls -l | grep -i “searchword”

例子:

linuxidc@linuxidc:~$ ls -l | grep -i linuxidc

此命令將列出當前目錄中包含單詞“linuxidc”的檔名的所有檔案。

在檔案中搜尋字串

您可以通過grep命令從包含特定文字字串的檔案中獲取一個句子。

句法:

grep “string” filename

例:

linuxidc@linuxidc:~$ grep 'Ubuntu' linuxidc.txt

我的範例檔案linuxidc.txt包含具有字串“Ubuntu”的句子,您可以在上面的輸出中看到該句子。 關鍵字和字串在搜尋結果中以彩色形式顯示。

在多個檔案中搜尋字串

如果您想從同一型別的所有檔案中搜尋包含您的文字字串的句子,grep命令隨時為您服務。

語法1:

$ grep “string” filenameKeyword*

語法 2:

$ grep “string” *.extension

例子1:

linuxidc@linuxidc:~$ grep 'Ubuntu' linuxidc*

此命令將從包含關鍵字“linuxidc”的檔名的所有檔案中獲取包含字串“Ubuntu”的所有句子。

例2:

linuxidc@linuxidc:~$ grep 'Ubuntu' *.txt

此命令將從所有擴充套件名為.txt的檔案中獲取包含字串“Ubuntu”的所有句子。

在不考慮字串的情況下搜尋檔案中的字串

在上面的範例中,我的文字字串幸運地與我的範例文字檔案中的文字字串相同。 如果我輸入了以下命令,我的搜尋結果將為nil,因為我的檔案中的文字不是以大寫單詞“Sample”開頭的

grep "Sample file" *.txt

讓我們告訴grep忽略搜尋字串的情況,並通過-i選項根據字串列印搜尋結果。

語法:

$ grep -i “string” filename

例子:

linuxidc@linuxidc:~$ grep -i 'ubuntu' *.txt

此命令將從所有擴充套件名為.txt的檔案中獲取包含字串“Ubuntu”的所有句子。 這不會考慮搜尋字串是大寫還是小寫。

在正規表示式的基礎上搜尋

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

句法:

$ grep “startingKeyword.*endingKeyword” filename

例子:

linuxidc@linuxidc:~$ grep 'Linux.*.Fedora' linuxidc.com.txt

此命令將從我在grep命令中指定的檔案中列印包含表示式的句子(從我的startingKeyword開始,到我的endingKeyword結尾)。

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

您可以使用grep命令在檔案中的搜尋字串之前/之後列印N行。 搜尋結果還包括包含搜尋字串的文字行。

金鑰字串後面N行的語法:

$ grep -A <N> 'string' filename

例子:

linuxidc@linuxidc:~$ grep -A 3 -i '專業的Linux系統入口網站'  linuxidc.com.txt

這是我的範例文字檔案的樣子:

這就是命令輸出的樣子:

它從我在grep命令中指定的檔案中顯示3行,包括包含搜尋字串的行。

金鑰字串前N行的語法:

$ grep -B <N> 'string' filename

您還可以在文字字串周圍搜尋N行。 這意味著在文字字串之前的N行和在文字字串之後的N.

關鍵字串周圍N行數的語法:

linuxidc@linuxidc:~$ grep -A 2 -i '目前Linux公社(LinuxIDC.com)'  linuxidc.com.txt

通過本文中描述的簡單範例,您可以掌握grep命令。 然後,您可以使用它來搜尋可能包含檔案或檔案內容的篩選結果。 在您掌握grep命令之後,這節省了大量的時間來瀏覽整個搜尋結果。

如果還有什麼疑問及想要咨詢的,請在本文下面Linux公社的評論框裡提出,謝謝閱讀。


IT145.com E-mail:sddin#qq.com