Skip to content
On this page

使用 Grep 命令搜索內容

🎫 教程内容于 2023-08-23 在以下平台驗證通過
✅ Ubuntu 22.10
✅ macOS 13.2.1

在 Linux 系統中,搜索文件內容是常見的任務。例如,您可能想要找到包含特定單詞或短語的所有文件。當您在大型代碼庫中尋找特定配置或方法調用時,這非常有用。

grep 是 Linux 系統中用於搜索文件內容的命令行實用工具。它是一個強大的工具,允許用戶在一個或多個文件中搜索文本字符串、正則表達式或模式。grep 通常與其他命令結合使用,用於過濾和操作數據。它也可在其他平臺上使用,如 Windows 和 macOS。

在本教程中,我們將通過實際示例和詳細說明最常用的選項,向您展示如何使用 grep 命令。

如何使用Grep命令

grep命令的基本語法如下:

bash
grep [選項] 模式 [文件...]

grep命令在一個或多個文件中搜索模式。如果找到匹配的模式,它會打印匹配的行。如果沒有指定文件,grep會從標準輸入讀取。

假設你有一個名爲file.txt的文件,內容如下:

This is a test file.
It has some text in it.
Another line of text.

要在file.txt文件中搜索單詞text,你可以運行以下命令:

bash
> grep text file.txt

It has some text in it.

輸出顯示包含單詞text的行。

如果你想顯示匹配的上下文,可以使用-C選項,後面跟上要顯示的匹配行前後的行數:

bash
> grep -C 1 text file.txt

This is a test file.
It has some text in it.
Another line of text.

輸出顯示包含單詞text的行以及前後1行。

如果有多個結果,輸出將用--分隔。例如:

bash
> grep -C 1 xxx file.txt

This is a test file.
It has some text in it.
Another line of text.
--
This is a test file.
It has some text in it.
Another line of text.

Grep 命令選項

grep 命令帶有許多選項,允許您自定義輸出並搜索特定模式。在本節中,我們將向您展示最常見的選項。

忽略大小寫

默認情況下,grep 是區分大小寫的。這意味着如果您搜索單詞 text,它將不匹配 TextTEXT

要使 grep 不區分大小寫,請使用 -i 選項:

bash
> grep -i TEXT file.txt

It has some text in it.

反向匹配

要反向匹配,使用 -v 選項。它將打印所有不匹配模式的行:

bash
> grep -v text file.txt

This is a test file.
Another line of text.

顯示行號

要顯示匹配行的行號,請使用 -n 選項:

bash
> grep -n text file.txt

2:It has some text in it.

僅顯示匹配部分

要僅顯示行的匹配部分,請使用 -o 選項:

bash
> grep -o text file.txt

text

僅顯示文件名

要僅顯示與模式匹配的文件名,請使用 -l 選項:

bash
> grep -l text file.txt

file.txt

僅顯示計數

要僅顯示匹配行的計數,請使用 -c 選項:

bash
> grep -c text file.txt

1

遞歸搜索

除了在單個文件中搜索外,您還可以使用 -r 選項在目錄及其子目錄中進行遞歸搜索:

bash
> grep -r text .

file.txt:It has some text in it.

搜索多個模式

要搜索多個模式,請使用 -e 選項後跟模式:

bash
> grep -e text -e line file.txt

It has some text in it.
Another line of text.

注意,模式使用邏輯 OR 運算符進行匹配,這意味着如果任何一個模式匹配,該行將被打印。

排除文件

要排除與特定模式匹配的文件,請使用 --exclude 選項:

bash
> grep --exclude=*.txt text .

您還可以使用 --exclude-dir 選項來排除目錄:

bash
> grep --exclude-dir=dir text .

注意,--exclude--exclude-dir 的值是與文件名匹配的 glob 表達式,您可以使用 * 來匹配任意數量的字符,使用 ? 來匹配單個字符。

使用正則表達式

grep 支持正則表達式。要使用正則表達式,請使用 -E 選項:

bash
> grep -E 't.xt' file.txt

It has some text in it.

注意,正則表達式中的點號匹配任意字符。因此,t.xt 匹配 text

常見的 Grep 命令示例

在本節中,我們將向您展示一些使用 grep 命令的實際示例。

在文件中搜索單詞

要在文件中搜索一個單詞,請使用以下命令:

bash
> grep -n -C 2 -i word file.txt

在特定目錄下搜索單詞

要在特定目錄下搜索一個單詞,請使用以下命令:

bash
> grep -r -n -i word /path/to/directory

這很有用,例如,您可能想要在 node_modules 目錄中搜索特定的變量名,或者您可能想要檢查項目中是否使用了特定的配置。

搜索並排除目錄

要搜索一個單詞並排除目錄,請使用以下命令:

bash
> grep -r -n -i --exclude-dir=dir1 --exclude-dir=dir2 word /path/to/directory

例如,您可能想要在項目目錄中搜索一個單詞,但排除 node_modules 目錄。

結論

在本教程中,我們向您展示瞭如何使用 grep 命令。現在您可以在文件和目錄中搜索特定的模式。要了解更多關於 grep 命令的信息,請訪問官方文檔