2021-05-12 14:32:11
在Linux中使用grep命令圖文範例詳解
什麼是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公社的評論框裡提出,謝謝閱讀。
相關文章