GNU/Linux >> Linux Esercitazione >  >> Linux

Ricerca di più modelli (parole) con ack?

Per ag , a partire dalla versione 0.19.2 l'impostazione predefinita prevede la ricerca ricorsiva nelle directory e nei file.

Per cercare più modelli, puoi utilizzare una sintassi simile a ack

ag 'pattern1|pattern2'

cercherà entrambi pattern1 e pattern2 .

Nel caso in cui non desideri cercare in modo ricorsivo, puoi impostare la profondità di ricerca su 1 tramite l'interruttore --depth NUM

Pertanto,

ag 'pattern1|pattern2' --depth 1

cercherà solo nella directory corrente per entrambi i modelli.


Questo dovrebbe essere sufficiente:

ack -R 'string1|string2'

Come -R è l'impostazione predefinita, puoi ometterla:

ack 'string1|string2'

Da man ack :

-r , -R , --recurse

Ricorsi nelle sottodirectory. Questa è l'impostazione predefinita e solo qui per la compatibilità con grep. Puoi anche usarlo per disattivare --no-recurseoff.

Se vuoi ottenere il pattern da un file, diciamo /path/to/patterns.file, puoi usare:

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

o equivalentemente:

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

Non riesco a trovare un equivalente esatto di grep -f .


Il comando ack può anche essere associato a pipe. Ad esempio, il primo ack trova i file contenenti pattern1 quindi reindirizzalo a un altro ack per cercare solo quei file per pattern2

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

La -l parametro significa elencare solo i file corrispondenti (invece del testo corrispondente). La -x parametro significa cercare solo i file reindirizzati ad esso. Questo è simile a restringere i file per la successiva ricerca di ack.

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

Questo è un AND operatore e non l'operatore OR fornito nelle altre soluzioni.


Linux
  1. Gestisci più istanze del servizio con systemctl

  2. Invia comandi a più sessioni SSH con Terminator

  3. Cerca all'interno del bucket S3 con i log?

  4. Ordinamento di numeri con più decimali in bash

  5. Systemd con più execStart

Come trovare file in Linux con il comando Trova

Come Grep per più stringhe e pattern

Come gestire più versioni Java con jEnv su Linux

Come installare e utilizzare il comando Ack in Linux con esempi

Linux cerca la stringa nelle cartelle e nei file con ack

Come cercare LDAP usando ldapsearch (con esempi)