GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire Grep con multipli e pattern?

Vorrei ottenere la corrispondenza multi pattern con AND implicito tra pattern, cioè equivalente a eseguire più greps in una sequenza:

grep pattern1 | grep pattern2 | ...

Quindi, come convertirlo in qualcosa di simile?

grep pattern1 & pattern2 & pattern3

Vorrei usare single grep perché sto costruendo argomenti in modo dinamico, quindi tutto deve stare in una stringa. L'uso del filtro è una funzionalità di sistema, non grep, quindi non è un argomento a favore.

Non confondere questa domanda con:

grep "pattern1|pattern2|..."

Questo è un OR corrispondenza di più modelli.

Risposta accettata:

agrep può farlo con questa sintassi:

agrep 'pattern1;pattern2'

Con GNU grep , se creato con il supporto PCRE, puoi fare:

grep -P '^(?=.*pattern1)(?=.*pattern2)'

Con ast grep :

grep -X '.*pattern1.*&.*pattern2.*'

(aggiungendo .* s come <x>&<y> corrisponde a stringhe che corrispondono a entrambi <x> e <y> esattamente , a&b non corrisponderebbe mai perché non esiste una stringa del genere che può essere entrambi a e b allo stesso tempo).

Se i motivi non si sovrappongono, potresti anche essere in grado di fare:

grep -e 'pattern1.*pattern2' -e 'pattern2.*pattern1'

Il miglior modo portatile è probabilmente con awk come già accennato:

awk '/pattern1/ && /pattern2/'

Con sed :

sed -e '/pattern1/!d' -e '/pattern2/!d'

Tieni presente che tutti avranno una sintassi diversa per le espressioni regolari.


Linux
  1. Come abbinare i modelli senza distinzione tra maiuscole e minuscole con Ls?

  2. Come trovare più stringhe nei file??

  3. Come eseguire più versioni di PHP con Nginx su Ubuntu?

  4. Come eseguire il grep con l'output a colori

  5. grep coppie di modelli e file

Come eseguire script Python con Apache e mod_wsgi su Ubuntu 20.04

Come eseguire il software Windows su Linux con Bottles

Come compilare ed eseguire programmi C, C++ in Linux

Come eseguire un alias con Sudo in Linux

Come scrivere ed eseguire un programma C in Linux

Come eseguire app della GUI Linux su Windows 10 con WSL e WSLg