GNU/Linux >> Znalost Linux >  >> Linux

Jak vyloučit v Grep

grep je výkonný nástroj příkazového řádku, který se používá k prohledávání jednoho nebo více vstupních souborů pro řádky, které odpovídají regulárnímu výrazu, a zapisuje každý odpovídající řádek na standardní výstup.

V tomto článku vám ukážeme, jak vyloučit jedno nebo více slov, vzorů nebo adresářů při vyhledávání pomocí grep .

Vyloučit slova a vzory #

Chcete-li zobrazit pouze řádky, které neodpovídají vyhledávacímu vzoru, použijte -v (nebo --invert-match ).

Chcete-li například vytisknout řádky, které neobsahují řetězec nologin byste použili:

grep -wv nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
git:x:994:994:git daemon user:/:/usr/bin/git-shell
linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash

-w volba říká grep vrátit pouze ty řádky, kde je zadaný řetězec celé slovo (uzavřené neslovnými znaky).

Ve výchozím nastavení grep rozlišuje velká a malá písmena. To znamená, že velká a malá písmena jsou považována za odlišná. Chcete-li při vyhledávání ignorovat velká a malá písmena, vyvolejte grep pomocí -i možnost.

Pokud hledaný řetězec obsahuje mezery, musíte jej uzavřít do jednoduchých nebo dvojitých uvozovek.

Chcete-li zadat dva nebo více vzorů vyhledávání, použijte -e možnost:

grep -wv -e nologin -e bash /etc/passwd

Můžete použít -e možnost tolikrát, kolikrát potřebujete.

Další možností, jak vyloučit více vzorů vyhledávání, je spojit vzory pomocí operátoru OR | .

Následující příklad vytiskne řádky, které neobsahují řetězce nologin nebo bash :

grep -wv 'nologin\|bash' /etc/passwd

GNU grep podporuje tři syntaxe regulárních výrazů, Basic, Extended a Perl-kompatibilní. Ve výchozím nastavení grep interpretuje vzor jako základní regulární výraz, kde jsou metaznaky jako | ztratí svůj zvláštní význam a musíte použít jejich verze se zpětným lomítkem.

Pokud použijete možnost rozšířeného regulárního výrazu -E , pak operátor | by nemělo být escapováno, jak je uvedeno níže:

grep -Ewv 'nologin|bash' /etc/passwd

Můžete zadat různé možné shody, které mohou být doslovné řetězce nebo sady výrazů. V následujícím příkladu jsou řádky, kde je řetězec games vyskytující se na samém začátku řádku jsou vyloučeny:

grep -v "^games" file.txt

Výstup příkazu lze filtrovat pomocí grep potrubím a na terminálu budou vytištěny pouze čáry odpovídající danému vzoru.

Chcete-li například vytisknout všechny běžící procesy ve vašem systému kromě těch, které běží jako uživatel „root“, můžete filtrovat výstup ps příkaz:

ps -ef | grep -wv root

Vyloučit adresáře a soubory #

Někdy při provádění rekurzivního vyhledávání pomocí -r nebo -R můžete chtít vyloučit konkrétní adresáře z výsledku vyhledávání.

Hlavní rozdíl mezi -r nebo -R možnosti je, že když je grep vyvolán s velkým R bude následovat všechny symbolické odkazy

Chcete-li vyloučit adresář z vyhledávání, použijte --exclude-dir volba. Cesta k vyloučenému adresáři je relativní k vyhledávacímu adresáři.

Zde je příklad ukazující, jak hledat řetězec linuxize ve všech souborech v /etc , kromě /etc/pki adresář:

grep -R --exclude-dir=pki linuxize /etc

Chcete-li vyloučit více adresářů, uzavřete vyloučené adresáře do složených závorek a oddělte je čárkami bez mezer.

Chcete-li například ve svém systému Linux najít soubory obsahující řetězec ‚gnu‘ s výjimkou proc , boot a sys adresáře, které byste spustili:

grep -r --exclude-dir={proc,boot,sys} gnu /

Při použití shody zástupných znaků můžete vyloučit soubory, jejichž základní název odpovídá GLOB specifikovanému v --exclude možnost.

V níže uvedeném příkladu hledáme ve všech souborech v aktuálním pracovním adresáři řetězec linuxize , kromě souborů končících na .png a .jpg adresář:

grep -rl --exclude=*.{png,jpg} linuxize *

Závěr č.

grep umožňuje vyloučit vzory a adresáře při hledání souborů.


Linux
  1. Jak Grep v souborech Pdf?

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

  3. Jak mohu vyhledat víceřádkový vzor v souboru?

  1. Jak prohledávat obsah více souborů pdf?

  2. Jak grep \nv souboru

  3. Jak prohledávat manuálové stránky Linuxu (např. pomocí grep)

  1. Jak najít soubor v Linuxu

  2. Jak najít konkrétní text pomocí GREP v systému Linux

  3. Použití grep pro vyhledávání obráceně