Dans cet article, nous vous montrons d'exécuter une recherche de chaînes à l'avance en utilisant Grep avec une expression régulière en vous donnant 10 exemples pratiques sur ses implémentations. De nombreux exemples discutés dans cet article ont des implications pratiques, ce qui signifie que vous pouvez les utiliser dans votre programmation quotidienne Linux. Les échantillons suivants décrivent quelques exemples regexp pour les modèles couramment recherchés.
Ex 1: Trouvez un seul affréteur dans un fichier texte
Pour sortir des lignes dans le fichier «livre» qui contiennent un caractère «$», Type:
$ grep '\ $' livre
Ex 2: Trouvez une seule chaîne dans un fichier texte
Pour produire des lignes dans le fichier «livre» qui contient la chaîne «14 $.99 ', Type:
$ grep '\ 14 $ \.Book 99 '
Ex 3: Trouvez un seul affréteur spécial dans un fichier texte
Pour sortir des lignes dans le fichier 'livre' qui contiennent un caractère '\', Type:
$ grep '\\' livre
Ex 4: lignes correspondantes commençant par un certain texte
Utilisez 'ˆ' dans un regexp pour désigner le début d'une ligne.
Pour produire toutes les lignes dans '/ usr / dict / words' commençant par 'pro', type:
$ grep 'ˆpro' / usr / dict / words
Pour produire toutes les lignes du fichier «livre» qui commencent par le texte «au début», quel que soit le cas, type:
$ grep -i 'ˆ dans le début du livre
NOTE: Ces regexps ont été cités avec des caractères; En effet, certaines obus traitent autrement le caractère 'ˆ' comme un «métacharacter» spécial
En plus des recherches de mots et de phrases, vous pouvez utiliser le Grep pour rechercher des modèles de texte complexes appelés expressions régulières. Une expression régulière ou «regexp» - est une chaîne de texte de caractères spéciaux qui spécifie un ensemble de modèles à correspondre.
Techniquement parlant, le mot ou les modèles de phrases sont des expressions régulières - juste des expressions très simples. Dans une expression régulière, la plupart des personnages, y compris les lettres et les chiffres, se représentent. Par exemple, le modèle regexp 1 correspond à la chaîne «1», et le motif garçon correspond à la chaîne «garçon».
Il y a un certain nombre de caractères réservés appelés métacharacteurs qui ne se représentent pas dans une expression régulière, mais ils ont une signification particulière qui est utilisée pour construire des modèles complexes. Ces métacharacteurs sont les suivants: ., *, [, ]], ˆ, $ et \. Il est bon de noter que ces métacharacteurs sont courants parmi presque toutes les distributions Linux communes et spéciales. Voici un bon article qui couvre les significations spéciales des métacharacteurs et donne des exemples de leur utilisation.
Ex 5: les lignes correspondantes se terminant par un certain texte
Utilisez '$' comme dernier caractère du texte cité pour correspondre à ce texte uniquement à la fin d'une ligne. Pour sortir des lignes dans le fichier «aller» se terminant par un point d'exclamation, tapez:
$ grep '!$ 'Aller
Ex 6: lignes correspondantes d'une certaine longueur
Pour faire correspondre les lignes d'une longueur particulière, utilisez ce nombre de '.'caractères entre' ˆ '' et '$' - pour ex-amples, pour correspondre à toutes les lignes qui sont deux (ou colonnes) larges, utilisez 'ˆ… $' comme regexp pour rechercher.
Pour produire toutes les lignes dans '/ usr / dict / word' qui sont exactement trois caractères de large, type:
$ grep 'ˆ… $' / usr / dict / words
Pour les lignes plus longues, il est plus utile d'utiliser une construction différente: 'ˆ.\ nombre \ $ ', où le nombre est le nombre de lignes à correspondre. Utiliser ',' pour spécifier une gamme de nombres.
Pour produire toutes les lignes dans '/ usr / dict / word' qui sont exactement douze caractères de large, type:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / words
Pour produire toutes les lignes dans '/ usr / dict / words' qui sont de vingt-deux caractères ou plus de largeur, type:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / words
Ex 7: les lignes correspondantes qui contiennent l'un de certains regexps
Pour faire correspondre les lignes qui contiennent un certain nombre de regexps, spécifiez chacun des regexp. Les lignes contenant l'un des regexps donnés seront sortis.
Pour produire toutes les lignes de «playboy» qui contient soit les motifs «le livre» ou le «gâteau», type:
$ grep 'le livre \ | gâteau' playboy
Ex 8: les lignes correspondantes qui contiennent tous les regexps
Pour sortir des lignes qui correspondent tous d'un certain nombre de regexps, utilisez le grep pour sortir des lignes de sortie contenant le premier regexp que vous souhaitez faire correspondre et tuyez la sortie vers un grep avec le deuxième regexp comme argument. Continuez à ajouter des tuyaux aux recherches GREP pour tous les regexps que vous souhaitez rechercher.
Pour sortir toutes les lignes de «playlist» qui contient les deux modèles «le rivage» et le «ciel», quel que soit le cas, type:
$ grep -i 'The Shore' Playlist | grep -i ciel
Ex 9: lignes correspondantes qui ne contiennent que certains caractères
Pour faire correspondre les lignes qui ne contiennent que certains caractères, utilisez le regexp 'ˆ [caractères] * $', où les caractères sont ceux qui correspondent. Pour sortir des lignes dans '/ usr / dict / words' qui ne contiennent que des voyelles, tapez:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / words
L'option «-i» correspond aux caractères quel que soit le cas; Ainsi, dans cet exemple, tous les personnages de voyelle sont égalés, quel que soit le cas.
Ex 10: Trouver des phrases quels que soient l'espacement
Une façon de rechercher une phrase qui pourrait se produire avec des espaces supplémentaires entre les mots, ou sur une rupture de ligne ou de page, est de supprimer tous les aliments et espaces supplémentaires de l'entrée, puis grep. Pour ce faire, tuyau l'entrée sur TR avec "\ r \ n: \> \ | -" comme argument à l'option '-d' (supprimant toutes les ruptures de ligne de l'entrée); tuyau que sur le filtre FMT avec l'option '-u' (sortie du texte avec un espacement uniforme); et tuyau à grep avec le motif à rechercher.
Pour rechercher des pauses de ligne pour la chaîne «en même temps que« dans le fichier «docs», type:
$ Cat Docs | tr -d '\ r \ n: \> \ |
-'| fmt -u | grep 'en même temps que'
Dans cet article, nous avons passé en revue 10 exemples pratiques d'utilisation de la commande grep linux pour la recherche et la recherche de chaînes dans un fichier texte. En cours de route, nous avons appris à utiliser des expressions régulières en conjonction avec Grep pour effectuer des recherches complexes sur les fichiers texte. Vous avez maintenant une meilleure idée de la puissance des fonctions de recherche Linux.
Voici des ressources supplémentaires pour ceux qui souhaitent en savoir plus sur la programmation Linux:
Revue complète du fonctionnement du fichier et du répertoire Linux