GNU/Linux >> Znalost Linux >  >> Linux

Hledání více vzorů (slov) pomocí ack?

Pro ag , od verze 0.19.2 je výchozí rekurzivní vyhledávání v adresářích a souborech.

Chcete-li hledat více vzorů, můžete použít podobnou syntaxi jako ack

ag 'pattern1|pattern2'

bude hledat obě pattern1 a pattern2 .

V případě, že nechcete vyhledávat rekurzivně, můžete nastavit hloubku hledání na 1 pomocí přepínače --depth NUM

Proto,

ag 'pattern1|pattern2' --depth 1

bude hledat pouze v aktuálním adresáři oba vzory.


To by mělo stačit:

ack -R 'string1|string2'

Jako -R je výchozí, můžete jej vynechat:

ack 'string1|string2'

Od man ack :

-r , -R , --recurse

Návrat do podadresářů. Toto je výchozí a pouze zde pro kompatibilitu s grep. Můžete jej také použít pro vypnutí --no-recurseoff.

Pokud chcete získat vzor ze souboru, řekněme /path/to/patterns.file, můžete použít:

ack "$(cat /path/to/patterns.file)"

nebo ekvivalentně:

ack "$(< /path/to/patterns.file)"

Nemohu najít přesný ekvivalent grep -f .


Příkaz ack může také řetězit spolu s rourami. Například první ack najde soubory obsahující vzor1 pak to přesměrujte do jiného potvrzení a vyhledejte vzor2 pouze v těchto souborech

ack -l 'pattern1' | ack -x 'pattern2'

-l parametr znamená pouze vypsat odpovídající soubory (místo shodného textu). -x parametr znamená hledat pouze soubory, které jsou k němu připojeny. Je to podobné jako zúžení souborů pro další hledání potvrzení.

ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'

Toto je A operátor a ne operátor OR uvedený v jiných řešeních.


Linux
  1. Spravujte více instancí služeb pomocí systemctl

  2. Odesílejte příkazy do více relací SSH pomocí Terminátora

  3. Hledat uvnitř kbelíku S3 s protokoly?

  1. Jak spravovat více verzí Pythonu pomocí Pyenv v systému Linux

  2. Jak spustit Grep s více a vzory?

  3. Systemd s více execStart

  1. Jak spárovat vzory bez rozlišení malých a velkých písmen s Ls?

  2. Hledat soubory s Gui?

  3. Třídění více klíčů pomocí Unixového řazení