僅使用 grep 尋找第一次出現的情況

僅使用 grep 尋找第一次出現的情況

假設我有一個包含很多單字的文件,我只想找出模式為「xyz」的第一個單字。如果同一行有多個具有這種模式的單字怎麼辦? -m傳回第一行中與其匹配的所有單字。我只需要 grep 指令。

答案1

預設情況下grep列印匹配模式,因此如果該模式在一行中出現一次或多次,grep將列印整行。

新增該標誌-m 7將告訴grep您僅列印模式出現的前 7 行。

所以這應該可以達到你想要的效果(我還沒測試過):

grep -o -m 1 xyz myfile | head -1

編輯:正如@Kusalananda 所指出的,您並不嚴格需要該-m標誌,但使用它意味著grep不需要解析整個文件,並且會更快地輸出結果,特別是如果myfile是一個大文件。

答案2

您的問題的答案在 grep 手冊頁:

grep -m1 'searchstring' file_name

選項-m<number>是關鍵。-m1只會顯示第一個符合項、-m2前 2 個符合項,依此類推。

相關內容