Linux 中的 grep 命令

Fumbani Banda 2023年1月30日 2022年5月11日
  1. Linux 中的 grep 命令
  2. 在 Linux 中使用 grep 命令匹配不區分大小寫的模式
  3. 使用 grep 命令計算 Linux 中的匹配數
  4. 在 Linux 中使用 grep 命令提供匹配的檔名
  5. 在 Linux 中使用 grep 命令匹配精確模式
  6. 在 Linux 中使用 grep 命令僅顯示匹配的模式
  7. 在 Linux 中使用 grep 命令顯示行號
  8. 在 Linux 中使用 grep 命令反轉模式匹配
  9. 在 Linux 中使用 grep 命令匹配起始字串
  10. 在 Linux 中使用 grep 命令匹配行尾
Linux 中的 grep 命令

本教程演示了使用 grep 命令匹配不區分大小寫的模式,計算匹配的數量,顯示匹配的檔名,匹配確切的模式,僅顯示匹配的模式,顯示行號,反轉模式匹配,匹配起始字串並匹配行尾。

Linux 中的 grep 命令

grep 命令表示全域性正規表示式列印。grep 命令在給定檔案中搜尋特定模式。

一旦找到匹配項,grep 命令會顯示與該模式匹配的所有行。grep 命令搜尋的模式是正規表示式。

grep 命令使用以下語法。

grep [options] pattern [file]

在 Linux 中使用 grep 命令匹配不區分大小寫的模式

grep 命令可以匹配不區分大小寫的模式。我們使用帶有 -i 選項的 grep 命令來匹配忽略區分大小寫的模式。

-i 選項告訴 grep 命令忽略模式和檔案中資料之間的大小寫差異。

下圖演示了使用 grep 命令匹配忽略模式和資料之間的大小寫區別的模式。我們目前在 foo 目錄中,它有 delft.txt 檔案。

使用 cat 命令將 delft.txt 檔案的內容列印到標準輸出。我們使用帶有 -i 選項的 grep 命令來匹配 delft.txt 檔案中的模式 Havard

輸出顯示在 delft.txt 中找到了 Havard 的兩個匹配項。delft.txt 檔案中的匹配對模式有不同的情況。

這是因為 grep 命令中的 -i 選項告訴 grep 命令,而不考慮模式和檔案中資料之間的大小寫差異。

匹配不區分大小寫的模式

使用 grep 命令計算 Linux 中的匹配數

grep 命令還可以計算正確匹配的數量。帶有 -c 選項的 grep 命令列印正確匹配的計數。

在下圖中,我們使用帶有 -i 選項的 grep 命令來檢查 delft.txt 中的模式 Havard。該命令找到兩個正確的匹配項。

然後我們使用相同的命令,但是這一次,我們包含了 -c 選項來列印正確匹配的數量,並且該命令顯示數字 2

這意味著 delft.txt 檔案中的模式 Havard 有兩個正確匹配項。

計算匹配數

在 Linux 中使用 grep 命令提供匹配的檔名

grep 命令可以給出包含匹配項的檔名。使用帶有 -l 選項的 grep 命令會顯示包含與模式匹配的檔名。

我們舉例說明如何使用 grep 命令返回與模式匹配的檔名。我們在 foo 目錄中工作,它有兩個檔案,delft.txtexample.txt

使用 cat 命令將兩個檔案的內容顯示到標準輸出。

我們使用帶有 -l 選項的 grep 命令並將模式設定為 text,並傳入萬用字元* 作為 grep 命令的最後一個引數。

-l 選項告訴 grep 命令僅顯示包含匹配項的檔名,而不顯示檔案中的行。

萬用字元 * 告訴 grep 命令搜尋當前目錄中的所有檔案。

grep 命令列印檔名 example.txt 因為在此檔案中找到了模式匹配。

給出匹配的檔名

在 Linux 中使用 grep 命令匹配精確模式

我們還可以使用 grep 命令來匹配確切的模式。為此,我們使用帶有 -w 選項的 grep 命令。

下圖顯示了使用 grep 命令來匹配確切的模式。我們有一個名為 delft.txt 的文字檔案。我們使用 cat 命令將 delft.txt 檔案的內容顯示到標準輸出。

使用帶有 -w 選項的 grep 命令來匹配 delft.txt 檔案中 Havard 的確切模式。 -w 選項告訴 grep 命令匹配整個模式。

此選項考慮模式和檔案中資料之間的大小寫區別。

grep 命令將具有確切模式的行顯示到標準輸出。

匹配精確模式

在 Linux 中使用 grep 命令僅顯示匹配的模式

使用 grep 命令,我們只能顯示包含匹配項的行部分。我們使用帶有 -o 選項的 grep 命令。

我們在 foo 目錄中,其中包含下圖中的 delft.txt 檔案。我們使用 cat 命令將檔案的內容顯示到標準輸出。

使用帶有 -o 選項的 grep 命令來匹配 delft.txt 檔案中的模式 Yale。模式匹配考慮了模式和檔案中資料之間的大小寫差異。 -o 選項告訴 grep 命令只列印匹配的行部分。

輸出顯示 grep 命令僅顯示與模式匹配的部分。

僅顯示匹配的模式

在 Linux 中使用 grep 命令顯示行號

使用 grep 命令,我們還可以顯示包含模式匹配的行號。我們可以使用帶有 -n 選項的 grep 命令來顯示包含模式匹配的行號。

在下圖中,我們在 foo 目錄中工作。

foo 目錄包含一個名為 delft.txt 的檔案。我們使用 cat 命令將 delft.txt 的內容列印到標準輸出。

使用帶有 -i-n 選項的 grep 命令來匹配 delft.txt 檔案中的模式 Yale-i 告訴 grep 命令忽略模式和檔案中資料之間的大小寫差異。 -n 選項告訴 grep 命令列印出匹配的行號。

從輸出中,我們可以看到已經為包含匹配項的行列印了行號。

顯示行號

在 Linux 中使用 grep 命令反轉模式匹配

使用 grep 命令,我們可以顯示所有不包含與模式匹配的檔案行。我們可以使用帶有 -v 選項的 grep 命令。

-v 選項告訴 grep 命令只顯示那些與提供的模式不匹配的行。

在下圖中,我們在 foo 目錄中工作。

foo 目錄有 delft.txt 檔案。我們使用 cat 命令將 delft.txt 檔案的內容顯示到標準輸出。

我們使用帶有 -v 選項的 grep 命令來顯示與 delft.txt 檔案中的 MIT 模式不匹配的所有行。輸出顯示所有不包含 MIT 模式的行。

反轉模式匹配

在 Linux 中使用 grep 命令匹配起始字串

我們可以使用 grep 命令顯示檔案中以特定字串模式開頭的所有行。我們可以通過使用^正規表示式模式來做到這一點。

^ 指定匹配應該是以^ 之前的模式開頭的行。

在下圖中,我們將 grep 命令的匹配項指定為^J。這意味著 grep 命令應該在 delft.txt 檔案中查詢以字母 J 開頭的行。

標準終端上的輸出顯示了 delft.txt 檔案中所有以字母 J 開頭的行。

匹配起始字串

在 Linux 中使用 grep 命令匹配行尾

grep 命令還可以匹配以特定模式結尾的行。我們使用 $ 正規表示式來匹配行尾。

我們在下圖中將 grep 命令的匹配項指定為 rd$。這意味著 grep 命令應該在 delft.txt 檔案中查詢以字串模式 rd 結尾的行。

成功匹配模式的兩行已顯示到標準終端。

匹配行尾

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

相關文章 - Linux Grep