Copyright HébergementWebs.com - License GPL

Rechercher plusieurs mots / modèle de chaîne à l'aide de la commande grep sur le shell Bash

Tutoriels   2020-09-23 00:20:50

Recherche multiple Mot / modèle de chaîne à l"aide de la commande grep sur le shell Bash H Comment rechercher plusieurs chaînes ou mots à l"aide de la commande grep? Par exemple, je voudrais rechercher mot1, mot2, mot3, etc. dans / chemin / vers / fichier. Comment forcer grep à rechercher plusieurs mots? Comment puis-je grep pour plusieurs modèles sur un système Linux, OS X, FreeBSD ou Unix? Quelle est la commande pour rechercher plusieurs mots sous Linux? La commande grep prend en charge le modèle d"expression régulière. Pour rechercher plusieurs modèles, utilisez la syntaxe suivante: Comment faire un grep pour plusieurs motifs? La syntaxe est: Utilisez des guillemets simples dans le modèle: grep "pattern * " file1 file2 Utilisez ensuite des expressions régulières étendues: egrep "pattern1 | pattern2 "* .py Enfin, essayez les anciens shells / oses Unix: grep -e pattern1 -e pattern2 * .pl Grep recherche deux mots dans une ligne Voici toutes les autres possibilités pour la commande grep et egrep: grep " mot1 | mot2 | mot3 "/ chemin / vers / fichier ### Recherche tous les fichiers texte ### grep " word * " * .txt ### Rechercher dans tous les fichiers python "wordA " ou "wordB " ### grep " wordA * "" " motB "* .py grep -E " mot1 | mot2 " * .doc grep -e string1 -e string2 * .pl egrep " mot1 | mot2 "* .c ### Afficher toutes les lignes qui ne correspondent pas au motif / mots / chaînes donnés ### grep -v " bar | foo "/ dir1 / dir2 / file1 egrep -v " pattern1 | pattern2 "/ path / to / file Exemples Dans cet exemple , recherchez un avertissement, une erreur et des mots critiques dans un fichier journal texte appelé / var / log / messages, entrez: $ grep "warning | error | critical "/ var / log / messages Pour faire correspondre simplement les mots, ajoutez l"option -w : $ grep -w " warning | error | critique "/ var / log / messages Utilisez la commande egrep et vous pouvez ignorer la syntaxe ci-dessus pour rechercher trois mots: $ egrep -w " warning | error | critical "/ var / log / messages Grep plusieurs modèles Parfois, nous devons grep plusieurs modèles avec un caractère spécial tel que" - "ou" - ". Par exemple, recherchez un modèle commençant par des mots « --ca » ou « --no ». Donc, si vous essayez ce qui suit, vous obtiendrez une erreur à l"écran telle que « grep: option non reconnue: --ca | - non ". Essayons un exemple: $ acme.sh --help | egrep "- ca | --no " Pour indiquer à grep de ne pas traiter " - " comme préfixe d"option de ligne de commande modèle comme suit: $ acme.sh --help | egrep - " - ca | --no " $ virt-sysprep --help | egrep - "- (tronquer | exécuter) " Toutes les autres options de commande grep ou egrep doivent apparaître avant le - final. Par exemple, transmettez -w et --color comme suit: acme.sh --help | egrep --color -w - "- ca | --no " Comment trouver plusieurs chaînes dans les fichiers? Essayons quelques exemples supplémentaires avec des options supplémentaires passées à grep / egrep: $ grep -e "warning | error | critique "/ var / log / messages Je vous recommande de passer le -i (ignorer la casse) et --color comme suit aussi: $ egrep -wi --color "warning | error | critical " / var / log / messages Exemples de sorties: Image 01: Commande Linux / Unix egrep Recherche plusieurs mots Sortie de démonstration Lors de l"utilisation de la commande grep, le méta-caractère pipe (|) doit être échappé par une barre oblique inverse, et il n"y a pas de telles exigences pour egrep. Pour rechercher tous les fichiers * .conf sous / etc /, entrez : # egrep -wi --color "foo | bar " /etc/*.conf Pour rechercher récursivement (y compris les sous-répertoires) dans la liste, exécutez: # egrep -Rwi --color "foo | bar " / etc / Où les options sont les suivantes: -R : recherche récursive -w : recherche uniquement des mots -i : ignorer la distinction de casse nctions. En d"autres termes, correspond à FOO, foo, Foo et ainsi de suite. --color : Entourez la couleur correspondante sur le terminal. Par exemple, affichez les chaînes correspondantes en couleurs. -v : inversez le sens de la correspondance pour sélectionner une ligne non correspondante. En d"autres termes, recherchez et affichez toutes les lignes qui ne correspondent pas à nos chaînes ou mots grep plusieurs chaînes en utilisant awk Dites si vous utilisez déjà awk commande ou commande sed, alors il n"est pas nécessaire de rediriger vers grep et d"alimenter les données de grep. Nous pouvons traiter et rassembler plusieurs chaînes en utilisant awk ou sed comme suit pour enregistrer le cycle du processeur: syntaxe de la commande awk $ awk "/ erreur | critique / échoué / "/ var / log / httpd / error_log # # recherche instive de cas avec * gnu / awk * ## $awk "BEGIN { IGNORECASE = 1 } / erreur | critique / échoué / " / var / log / messages $ awk "/ word1. * Word2 / " input $ awk "/ myPattern1 / && / myPattern2 / "/ path / to / file ## awk ne correspond pas, c"est-à-dire afficher toutes les lignes sauf les journaux HTTP / 2.0 ## $ awk "! / HTTP / 2.0 / " /var/log/nginx/cyberciti.bizerror_log Syntaxe de la commande sed $ sed -e "/ erreur / b "-e " / critcial / b "-ed / var / log / apache / nixcraft.com_error_log $ sed "/ stringOne /! d; / stringTwo /! d "~ / backups / conf.txt ## sed correspondance négative (NON). Par exemple, affichez tous les hôtes sauf cbz01-www ## $ sed -n "/ cbz01-www /! p "/ etc / hosts Comme vous pouvez le constater, la syntaxe grep est facile à lire et à implémenter. Cependant, j"ai également fourni la syntaxe awk et sed pour vos besoins de shell. Conclusion Vous avez appris à utiliser la commande grep pour localiser plusieurs mots ou chaînes en une seule fois. Pour plus d"informations, consultez tous nos autres didacticiels relatifs à grep ou lisez la page de manuel de grep en tapant la commande man suivante. Vous pouvez également le lire en ligne ici : Cette entrée est 3 sur 7 dans le Tutoriel de commande grep Linux / UNIX série. Continuez à lire le reste de la série: Comment utiliser la commande grep sous Linux / UNIX Expressions régulières dans grep Rechercher plusieurs mots / modèle de chaîne à l"aide de la commande grep Grep compte les lignes si une chaîne / mot correspond Grep à partir de fichiers et affiche le nom du fichier Comment rechercher des fichiers par contenu sous UNIX Commande grep: Afficher uniquement les directives du fichier de configuration