Trouver des chaînes dans des fichiers texte en utilisant Grep avec une expression régulière

Trouver des chaînes dans des fichiers texte en utilisant Grep avec une expression régulière
Grep est l'un des outils les plus populaires pour rechercher et trouver des chaînes dans un fichier texte. Le nom «grep» dérive d'une commande dans l'outil de rédaction de ligne Unix Ed Now-Obsolete - la commande ED pour la recherche globalement via un fichier pour un expression régulière et puis impression Ces lignes étaient g / re / p, où était l'expression régulière que vous utiliseriez. Finalement, la commande grep a été écrite pour effectuer cette recherche sur un fichier lorsqu'il n'utilise pas ED.

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'

Résumé

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:

Ressources pour les administrateurs système

  • Guide d'administration du système Linux - Qu'est-ce que le système d'exploitation Linux et son fonctionnement
  • Guide d'administration du système Linux - Présentation de la mémoire virtuelle Linux et du cache de tampon disque
  • Guide d'administration du système Linux - meilleures pratiques pour surveiller les systèmes Linux
  • Guide d'administration du système Linux - meilleures pratiques pour effectuer des bottes et des fermetures Linux
  • Guide d'administration du système Linux - meilleures pratiques pour faire et gérer les opérations de sauvegarde

Ressources pour les programmeurs de noyau Linux

  • Comment fonctionne la gestion de la mémoire du système d'exploitation Linux
  • Revue complète des processus du système d'exploitation du noyau Linux
  • Quels sont les mécanismes derrière la gestion des tâches du noyau Linux
Dictionnaire du système de fichiers Linux

Revue complète du fonctionnement du fichier et du répertoire Linux