GNU/Linux >> Znalost Linux >  >> Linux

Najít pouze první výskyt pouze pomocí Grepu?

Předpokládejme, že mám soubor s mnoha slovy, chci najít pouze první slovo se vzorem „xyz“. Jak to udělám, pokud je na stejném řádku více slov s tímto vzorem?
-m vrátí všechna slova na prvním řádku, ve kterých se shoduje. Potřebuji pouze příkaz grep.

Přijatá odpověď:

Ve výchozím nastavení grep vytiskne řádky odpovídající vzoru, takže pokud se vzor objeví jednou nebo vícekrát v řádku, grep vytiskne celý tento řádek.

Přidání příznaku -m 7 řekne grep vytisknout pouze prvních 7 řádků, kde se vzor vyskytuje.

Takže by to mělo dělat, co chcete (netestoval jsem to):

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

Edit:jak zdůraznil @Kusalananda, nepotřebujete striktně -m příznak, ale jeho použití znamená grep nebude muset analyzovat celý soubor a výsledek bude zobrazovat rychleji, zvláště pokud myfile je velký soubor.


Linux
  1. Shoda víceřádkového vzoru pomocí Sed, Awk nebo Grep?

  2. Grep – Proč závorky ve vzoru Grep odstraňují proces Grep z výsledků PS?

  3. Ponechat pouze první řádek z každé sekvence po sobě jdoucích řádků, které odpovídají vzoru?

  1. Sed:Vytisknout pouze první výskyt shody vzoru?

  2. Jak vyhledávat v konkrétních souborech odpovídajících vzoru?

  3. Použití grep a sed k nalezení a nahrazení řetězce

  1. Použití linuxového příkazu find – Použití s ​​příklady

  2. Jak zastavit příkaz Najít po prvním zápase?

  3. Grep v obrovském souboru protokolu (>14 GB) pouze posledních x GB?