如何在 Linux 中使用 Grep 命令

用實際例子理解grep命令,輕鬆過濾和顯示文件內容

GREP代表“全局正則表達式打印”。它是 Linux 提供的一個有用的命令行實用程序,用於搜索與用戶提供的模式匹配的文本行。

grep以用戶希望在特定文件中搜索的字符串或單詞的形式獲取用戶的輸入。該命令然後檢查用戶指定的文件是否有此模式,然後返回與提供的模式匹配的行。

它通過過濾文件的內容做得非常出色,從而使我們的任務更容易同時搜索單個或多個文件的特定內容。

在本文中,讓我們grep通過一些實際示例詳細回顧該命令的功能。

grep命令可用的選項

這些是您將經常與grep命令一起使用的一些基本選項。

選項 描述
-i 對於不區分大小寫的搜索
-r 遞歸搜索指定目錄及其子目錄中的所有文件
-c 顯示字符串出現的總次數
-v 顯示不匹配的行
-w 過濾單獨使用的特定單詞

使用grep命令

grep命令通常與管道 ( |) 實用程序一起使用。當您想將它與其他一些 Linux 命令一起使用時,它可以通過 shell 管道來實現。雖然,grep也可以在沒有管道 ( |) 實用程序的情況下單獨使用。

讓我們看看grep有和沒有管道實用程序的命令的一些基本語法。

讓我首先向您展示我將用來說明grep命令的示例文本文件。

INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
cartesian coordinates
importance of all th cartesian coordinates.
Following are two empty lines.



use of a bullock cart is a common sight in the village for the agrarian chores.

This is the end of the sample file.

grep與管道 ( | ) 實用程序一起使用

grep命令可以與使用 shell 管道的其他 Linux 命令一起實現。就像,使用該cat命令顯示文件的內容,但同時使用該grep命令將輸出管道化以僅顯示您希望查看的內容。當我們通過示例時,這將更加清楚。

語法

[command] | grep [string]

示例

cat sample.txt | grep legislature

在這裡,我使用該cat命令顯示了“sample.txt”文件中的一些行。僅顯示其中包含“立法機關”一詞的行,而忽略其餘行。

輸出

[email protected]:~/workspace$ cat sample.txt | grep legislature
india stands on three pillars of legislature, executive and judiciary.
[email protected]:~/workspace$

grep不使用管道 ( | ) 實用程序使用

grep甚至可以直接用作單獨的命令,而無需使用管道 ( | ) 實用程序。

語法

grep [string_to_be_searched] [filename]

示例

grep India sample.txt

輸出

India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource

因此,我grep直接使用該命令從文本文件“sample.txt”中過濾包含字符串“India”的行。

使用grep命令進行不區分大小寫的搜索

當我們在終端上觸發命令時,Linux 對區分大小寫非常謹慎。這需要用戶小心放入命令中的字符串的大小寫。

讓我們通過一個例子來了解這一點。

grep peace sample.txt

在這種情況下,我們不會得到輸出,因為示例文件中不存在“和平”一詞。我們有大寫字母“P”的“和平”一詞。這個詞是一樣的,但是當我們使用grep沒有任何選項的命令時,它會在文件中搜索完全匹配的內容,不考慮字母大小寫的任何變化。

為避免這種歧義,您可以簡單地使用-i字面上告訴grep命令“忘記我放入字符串的情況,只搜索文件中所有匹配模式”的選項。

句法:

grep -i [string] [filename]

示例

grep -i peace sample.txt

輸出

INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
India Is a Beautiful Country Of Peace Loving People.

無論匹配字符串是什麼情況,都會顯示所有匹配的行。

使用grep命令遞歸搜索

-r選項將搜索目錄及其所有子目錄中與用戶在命令中提供的字符串模式匹配的所有文件。

語法

grep -i -r [string] [file_path]

示例

grep -i -r tomcat /home/gaurav/workspace

這裡的字符串是'tomcat',它將在目錄工作區中搜索。'workspace' 目錄中的所有子目錄和文件也將被掃描以匹配提供的字符串模式。

輸出

./context_log.policy:// catalina.policy - Security Policy Permissions for Tomcat 7
./context_log.policy:// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
./context_log.policy://  grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
./context_log.policy:grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
./context_log.policy:    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";
./context.xml:    
./catalina.properties:# - Tomcat Bootstrap JARs
./catalina.properties:# - Tomcat API JARs
./catalina.properties:# - Tomcat JARs
./catalina.properties:# - Common non-Tomcat JARs
./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar
./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true
./catalina.properties:#tomcat.util.buf.StringCache.char.enabled=true
./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000
./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000
./server.xml:              pathname="conf/tomcat-users.xml" />
./server.xml:    
./tomcat-users.xml:  
./tomcat-users.xml:
./web.xml:  
./web.xml:  

注意:在命令中使用該-r選項時,grep我們需要提供文件的路徑而不是文件名

僅使用grep命令搜索整個單詞

很多情況下,您將搜索一個詞,但最終會用包含匹配詞但不作為單個詞的匹配行填充終端。您可能會看到包含一些單詞的行,這些單詞的子部分是您輸入的字符串。

對此感到困惑?別擔心,一旦你得到了例子,理解起來就會容易得多。

示例

在這裡,我想搜索單個單詞“cart”並在文件“sample.txt”中顯示與該單詞匹配的所有行。

grep -i cart sample.txt

輸出

Cartesian coordinates
importance of all the Cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores
The cart went missing as the boy left it loose.

在輸出中,您可以觀察到單詞 'Cartesian' 也包含單詞 'cart',因此,即使我們不希望顯示包含單詞 'Cartesian' 的行,也會顯示它們。

您可以將-w選項與grep命令一起使用來解決這種歧義。

語法

grep -i -w [string] [filename]

示例

grep -i -w cart sample.txt

輸出

use of a bullock cart is a common sight in the village for the agrarian chores.
The cart went missing as the boy left it loose.

現在,當您使用 -w選項時,grep您將只獲得使用“cart”一詞的行作為一個整體。

使用grep命令反向搜索

grep命令也可以反向使用。我們可以grep通過隱藏匹配的行並僅顯示未找到匹配的行來相反地使用該命令。您可以使用-v帶有grep命令的選項來執行此操作。

語法

grep -i -v [string] [filename]

示例

grep -i -v resource sample.txt

輸出

INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
cartesian coordinates
importance of all th cartesian coordinates.




use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.

在輸出中,除了包含單詞“resource”的行之外,所有其他行都顯示出來。

計算匹配字符串的出現次數

grep如果文件中的數據很大,則命令的輸出通常很長。匹配越多,grep命令的輸出越長。Linux 為您提供了一個選項,您可以在其中顯示匹配的出現次數。

語法

grep -i -c [string] [filename]

示例

grep -i -c india sample.txt

輸出

[email protected]:~/workspace$ grep -i -c india sample.txt
4
[email protected]:~/workspace$

在這裡,輸出是一個數字,它是文件 sample.txt 中單詞“India”的出現次數。

注意:我-i在每個示例中都使用了該選項,以確保區分大小寫問題的安全。如果您確定要搜索的單詞的大小寫,則可以放心地省略該 -i 選項。

結論

grep在本教程中,我們學習了該命令在 Linux 系統上的基本用法。我們還學會了顯示最適合我們要求的各種內容,而不是讓終端擁擠不堪。grep如果用於掃描大型數據集,命令肯定會節省時間。

Tags: #格雷普

如何在 Chromebook 上複製和粘貼

如何在 Chromebook 上複製和粘貼

在切換到 Chromebook 時,您可能想知道的第一件事是如何做基本的事情——你在以前的操作系統中掌握的那種東西。複製和粘貼是您必須在某一時刻使用的一項基本功能。

如何使用 tt 在 Linux 上進行打字測試

如何使用 tt 在 Linux 上進行打字測試

在現代科技時代,打字已成為許多職業最常見的活動之一。學會更快更準確地打字可以幫助您在相同的時間內完成更多的工作。

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Ubuntu 因其健壯性和相對較少的錯誤而廣受歡迎。但它肯定不是沒有問題。其中一個問題是其 Wi-Fi 驅動程序。您可能會打開系統電源,卻發現您的 Wi-Fi 無法正常工作。

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

除了所有的絨毛,這裡列出了適用於 Ubuntu 的最佳免費視頻編輯器,您可以使用它們來創建令人驚嘆的視頻。

如何在 Chromebook 上創建和掃描二維碼

如何在 Chromebook 上創建和掃描二維碼

快速響應碼,簡稱 QR 碼,是一種高級條碼,包含比傳統條碼更多的信息。這些代碼是二維的,允許您垂直或水平掃描它們。

如何在 Arch Linux 中安裝和刪除軟件包

如何在 Arch Linux 中安裝和刪除軟件包

想在 Arch Linux 上安裝軟件包但不知道如何安裝?很多人第一次從基於 Debian 的發行版遷移到 Arch 時都會遇到這個問題。但是,您可以使用包管理器輕鬆管理基於 Arch 的系統上的包。

如何在 Linux 上安裝 Spotify

如何在 Linux 上安裝 Spotify

Spotify 是最大的音樂流媒體服務之一。它具有適用於移動(Android 和 iOS)和桌面(Mac 和 Windows)設備的本機客戶端。

9 個讓你開始使用 Linux 的基本命令

9 個讓你開始使用 Linux 的基本命令

Linux 操作指南通常希望您在終端中執行某些操作,這乍一看似乎令人生畏。但不要擔心;這個 Linux 命令備忘單將涵蓋打開終端和發出一些有用命令的過程。

如何使用 Mv 命令移動 Linux 文件

如何使用 Mv 命令移動 Linux 文件

雖然您可能已經知道如何使用 GUI 文件瀏覽器在 Linux 中移動文件,但您可能想知道終端中是否有移動命令可以讓您快速將文件移動到不同的目錄。mv 命令就是您想要的,它的簡單語法和一些可選的安全標誌易於使用。

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

默認情況下,Ubuntu 允許您切換應用程序而不是窗口。以下是如何在 Ubuntu 上的 Alt-Tab 中反轉它並取消組合選項卡。