如何在 Grep 中搜索多個字串、模式或單詞?


介紹

Grep 是 Linux/Unix 系統中最強大且使用最廣泛的命令列工具之一。它代表“全域性正則表示式列印”,用於在文字檔案或命令輸出中搜索特定模式或字串。

它可以搜尋整個目錄結構,過濾結果並僅向用戶顯示相關資料。Grep 是一種用途廣泛的工具,可用於許多不同的任務,包括系統管理、程式設計和資料分析。

基本的 Grep 命令

Grep 是一個功能強大的命令列工具,用於基於 Unix 的作業系統中搜索檔案中或其他命令輸出中的特定模式或文字字串。簡單 grep 命令的基本語法如下:

grep [options] pattern [file] 

“模式”是要搜尋的字串或正則表示式,“檔案”引數指定要搜尋的檔名。

如果沒有給出檔名,grep 將從標準輸入(例如,來自另一個命令的輸出)讀取。與 grep 一起使用的最常見選項之一是“-i”,它使搜尋不區分大小寫。

如何搜尋單個字串或模式的示例

要在檔案中搜索單個字串,請使用以下基本語法:

bash grep 'string' filename  

例如,如果要查詢名為“fruits.txt”的檔案中“apple”一詞的所有出現,則可以使用:

grep 'apple' fruits.txt 

如果要匹配模式而不是精確的字串,則可以在 grep 中使用正則表示式。

例如,如果要查詢所有以“a”開頭,後跟任何字元,然後以“le”結尾的單詞,則可以使用:

grep 'a.*le' fruits.txt 

這將匹配諸如“apple”、“able”和“avocado”之類的單詞。

在搜尋多個字串或模式之前,瞭解基本的 Grep 命令(如語法和選項)至關重要。搜尋單個字串需要在所需字串周圍使用引號,而搜尋模式則需要使用正則表示式。

搜尋多個字串或模式

Grep 是一款非常強大的工具,可用於在給定檔案或目錄中搜索多個字串或模式。預設情況下,Grep 將搜尋檔案中給定模式的第一次出現,但如果我們想一次找到不同模式的多次出現怎麼辦?

這就是 OR(|)運算子派上用場的地方。OR 運算子允許我們同時搜尋多個字串或模式。

要使用此選項,只需列出以 OR 符號分隔的每個字串或模式。例如,假設我們要查詢名為“fruits.txt”的檔案中“apple”或“banana”的所有出現。

我們將使用以下命令:

grep 'apple|banana' fruits.txt  

此命令將返回包含“apple”或“banana”的所有行。需要注意的是,在使用 OR 運算子時,每個字串或模式都必須用自己的引號括起來。

OR 運算子還可以與其他 Grep 選項(如 -i(不區分大小寫)、-v(反轉匹配)和 -r(遞迴))結合使用。例如,假設我們要搜尋名為“fruits_folder”的目錄中任何檔案中包含“apple”、“banana”或“cherry”的所有行。

我們將使用以下命令:

grep -ir 'apple|banana|cherry' fruits_folder/ 

在特定上下文中搜索單詞

Grep 可用於在特定上下文中搜索特定單詞或模式。當您需要查詢與特定主題相關的資訊並希望檢視一些周圍文字以獲取更多上下文時,這尤其有用。Grep 中的上下文選項允許您指定在每次匹配之前和/或之後應顯示多少行上下文。

如何使用帶有上下文選項 (-A、-B、-C) 的 Grep 的說明

Grep 中有三個不同的上下文選項:

  • -A - 顯示每次匹配後指定行數

  • -B - 顯示每次匹配前指定行數

  • -C - 顯示每次匹配前後的指定行數您可以根據需要使用這些選項的任何組合。

僅搜尋完全匹配

您是否曾經在嘗試使用 Grep 搜尋精確的單詞或短語時感到沮喪,但搜尋結果也出現了一堆部分匹配?當在包含大量文字的大檔案中搜索時,這尤其常見。幸運的是,Grep 中有一個選項允許您僅搜尋完全匹配 - 單詞邊界選項。

單詞邊界選項說明

單詞邊界選項 (\b) 是一種特殊字元,它告訴 Grep 僅匹配既有開頭又有結尾的單詞。它有助於確保您的搜尋結果不包含任何部分匹配(例如,如果您搜尋“cat”,它不會返回諸如“caterpillar”或“scattered”之類的結果)。\b 字元通常與其他搜尋詞一起使用以建立更精細的搜尋。

要將您的搜尋範圍縮小到僅包含“apple”一詞的例項,請在單詞前後新增 \b 字元:

grep '\bapple\b' file.txt 

這將僅返回出現精確短語“apple”的行。

使用單詞邊界選項進行精確匹配搜尋的示例

以下是一些您可能在實踐中如何使用單詞邊界選項的示例:- 查詢“book”和“books”的所有出現,但不查詢包含這些字母的其他任何單詞:

grep '\bbook\b' file.txt
  • 查詢“cat”和“cats”的所有出現,但不查詢包含這些字母的其他任何單詞:grep '\bcat\b' file.txt- 查詢“data analysis”的精確短語的所有出現

grep '\bdata analysis\b' file.txt

使用單詞邊界選項可以顯著提高 Grep 搜尋的準確性和相關性。嘗試使用搜索詞的不同組合並細化結果,直到找到您要查詢的內容。

使用正則表示式搜尋

正則表示式是一組用於定義搜尋模式的字元。與簡單的字串或模式匹配相比,它們允許進行更復雜和更具體的搜尋。

正則表示式提供了一種靈活的方式來搜尋檔案中的文字,並且可以用於從大型資料集中提取資訊。Grep 內建支援正則表示式,使其成為執行復雜搜尋的絕佳工具。

正則表示式及其在 Grep 搜尋中的用途說明

正則表示式由各種字元組成,這些字元在與 Grep 一起使用時具有特殊含義。例如,點(.)字元匹配任何單個字元,而星號(*)匹配前一個字元的零個或多個出現。管道(|)字元用於分隔多個搜尋模式,而括號([])用於建立匹配任何一個包含字元的字元集。

正則表示式的一個強大功能是能夠使用組和反向引用。組是透過將表示式的部分括在括號()中建立的。

結論

Grep 是一款強大的工具,允許使用者在給定檔案中搜索多個字串、模式或單詞。透過掌握 Grep 的基本命令和語法,使用者可以輕鬆搜尋字串或模式的單個例項。但是,Grep 的真正力量在於它能夠一次搜尋多個字串或模式。

透過使用 OR 運算子(|),使用者可以擴充套件其搜尋範圍,一次包含許多不同的可能性。此外,透過使用上下文選項 (-A、-B、-C),使用者可以在更大的上下文中搜索特定單詞。

更新於:2023年6月6日

2K+ 閱讀量

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.