GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter Grep avec plusieurs et modèles ?

Je souhaite obtenir la correspondance multi-modèle avec AND implicite entre les motifs, c'est-à-dire équivalent à exécuter plusieurs greps dans une séquence :

grep pattern1 | grep pattern2 | ...

Alors, comment le convertir en quelque chose comme ?

grep pattern1 & pattern2 & pattern3

Je voudrais utiliser un seul grep parce que je construis des arguments dynamiquement, donc tout doit tenir dans une seule chaîne. L'utilisation du filtre est une fonctionnalité système, pas grep, donc ce n'est pas un argument pour cela.

Ne confondez pas cette question avec :

grep "pattern1|pattern2|..."

Ceci est un OU correspondance de motifs multiples.

Réponse acceptée :

agrep peut le faire avec cette syntaxe :

agrep 'pattern1;pattern2'

Avec GNU grep , lorsqu'il est construit avec le support PCRE, vous pouvez faire :

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

Avec le dernier grep :

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

(en ajoutant .* s comme <x>&<y> correspond aux chaînes qui correspondent à la fois à <x> et <y> exactement , a&b ne correspondrait jamais car il n'y a pas une telle chaîne qui peut être à la fois a et b en même temps).

Si les motifs ne se chevauchent pas, vous pouvez également faire :

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

Le meilleur moyen portable est probablement avec awk comme déjà mentionné :

awk '/pattern1/ && /pattern2/'

Avec sed :

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

Veuillez noter que tous ceux-ci auront une syntaxe d'expression régulière différente.


Linux
  1. Comment faire correspondre les modèles insensibles à la casse avec Ls ?

  2. Comment trouver plusieurs chaînes dans des fichiers ? ?

  3. Comment exécuter plusieurs processus Tor à la fois avec différentes adresses IP de sortie ?

  4. grep paires de motifs et fichier

  5. Comment grep ps sortie avec des en-têtes

Comment exécuter des scripts Python avec Apache et mod_wsgi sur Ubuntu 20.04

Comment exécuter un logiciel Windows sur Linux avec des bouteilles

Comment compiler et exécuter des programmes C, C++ sous Linux

Comment exécuter un alias avec Sudo sous Linux

Comment écrire et exécuter un programme C sous Linux

Comment exécuter des applications d'interface graphique Linux sur Windows 10 avec WSL et WSLg