Comment utiliser des expressions awk et régulières pour filtrer le texte ou la chaîne dans les fichiers
- 947
- 87
- Victor Charpentier
Lorsque nous exécutons certaines commandes dans Unix / Linux pour lire ou modifier le texte à partir d'une chaîne ou d'un fichier, nous essayons la plupart du temps de filtrer la sortie vers une section d'intérêt donnée. C'est là que l'utilisation d'expressions régulières est utile.
Lisez également: 10 opérateurs de chaînage Linux utiles avec des exemples pratiques
Quelles sont les expressions régulières?
Une expression régulière peut être définie comme une chaîne qui représente plusieurs séquences de caractères. L'une des choses les plus importantes à propos des expressions régulières est qu'ils vous permettent de filtrer la sortie d'une commande ou d'un fichier, de modifier une section d'un fichier de texte ou de configuration, etc.
Caractéristiques de l'expression régulière
Des expressions régulières sont faites de:
- Personnages ordinaires comme l'espace, souligner (_), A-Z, A-Z, 0-9.
- Meta personnages qui sont étendus aux personnages ordinaires, ils incluent:
(.)
il correspond à n'importe quel personnage unique sauf une nouvelle ligne.(*)
il correspond à zéro ou plus d'existences du caractère immédiat qui le précédent.[ personnages) ]
Il correspond à l'un des caractères spécifiés dans les caractères, on peut également utiliser un trait d'union(-)
pour signifier une gamme de caractères tels que[un F]
,[1-5]
, et ainsi de suite.^
il correspond au début d'une ligne dans un fichier.$
correspond à la fin de la ligne dans un fichier.\
C'est un personnage d'évasion.
Afin de filtrer le texte, il faut utiliser un outil de filtrage de texte tel que awk. Vous pouvez penser à awk En tant que langage de programmation qui lui est propre. Mais pour la portée de ce guide pour utiliser awk, Nous le couvrirons comme un outil de filtrage de ligne de commande simple.
La syntaxe générale de AWK est:
# awk 'script' nom de fichier
Où 'scénario'
est un ensemble de commandes qui sont comprises par awk et sont exécutés dans le dossier, nom de fichier.
Il fonctionne en lisant une ligne donnée dans le fichier, fait une copie de la ligne puis exécute le script sur la ligne. Ceci est répété sur toutes les lignes du fichier.
Le 'scénario'
est sous la forme '/ motif / action'
où modèle est une expression régulière et le action est ce que Awk fera quand il trouvera le motif donné dans une ligne.
Comment utiliser l'outil de filtrage awk dans Linux
Dans les exemples suivants, nous nous concentrerons sur les personnages Meta dont nous avons discuté ci-dessus sous les caractéristiques de AWK.
Un exemple simple d'utilisation de awk:
L'exemple ci-dessous imprime toutes les lignes du fichier / etc / hôtes Puisqu'aucun modèle n'est donné.
# awk '//print '/ etc / hôtesAwk imprime toutes les lignes d'un fichier
Utilisez awk avec motif:
I l'exemple ci-dessous, un motif hôte local
a été donné, donc Awk correspondra à la ligne hôte local dans le / etc / hôtes
déposer.
# awk '/ localhost /print '/ etc / hôtesAwk Imprimez une ligne correspondante dans un fichier
Utilisation de awk avec (.) Wild Card dans un modèle
Le (.)
correspondra aux chaînes contenant localiser, hôte local, local Dans l'exemple ci-dessous.
C'est-à-dire * l Some_Single_Character C *.
# awk '/ L.c /print '/ etc / hôtesUtilisez awk pour imprimer des chaînes correspondantes dans un fichier
Utilisation du caractère awk avec (*) dans un motif
Il correspondra aux chaînes contenant hôte local, local, lignes, capable, Comme dans l'exemple ci-dessous:
# awk '/ l * c /print '/ etc / localhostUtiliser awk pour faire correspondre les chaînes dans le fichier
Vous vous rendrez également compte que (*)
essaie de vous procurer le plus long match possible qu'il peut détecter.
Laissez regarder un cas qui le démontre, prenez l'expression régulière t * t
ce qui signifie faire correspondre les chaînes qui commencent par la lettre t
et se terminer avec t
Dans la ligne ci-dessous:
C'est Tecmint, où vous obtenez les meilleurs bons tutoriels, comment, guides, tecmint.
Vous obtiendrez les possibilités suivantes lorsque vous utiliserez le motif / t * t /
:
c'est t c'est tecmint c'est tecmint, où vous obtenez T c'est tecmint, où vous obtenez le meilleur bon t C'est Tecmint, où vous obtenez les meilleurs bons tutoriels, comment c'est Tecmint, où vous obtenez les meilleurs bons tutoriels , comment tos, guides, t c'est tecmint, où vous obtenez les meilleurs bons tutoriels, comment les tos, guides, tecmint
Et (*)
dans / t * t /
Le personnage du Wild Card permet à AWK de choisir la dernière option:
C'est Tecmint, où vous obtenez les meilleurs bons tutoriels, comment, guides, tecmint
Utilisation de awk avec set [caractère (s)]
Prendre par exemple l'ensemble [AL1]
, Ici Awk correspondra à toutes les chaînes contenant un caractère un
ou l
ou 1
dans une ligne dans le fichier / etc / hôtes.
# awk '/ [al1] /print '/ etc / hôtesUtilisation-AWK pour imprimer le caractère correspondant dans le fichier
L'exemple suivant correspond aux chaînes à commencer par K
ou k
suivie par T
:
# awk '/ [Kk] t /print '/ etc / hôtesUtiliser awk pour imprimer une chaîne correspondante dans le fichier
Spécification des caractères dans une gamme
Comprendre les personnages avec awk:
[0-9]
signifie un seul numéro[A-Z]
signifie faire correspondre une seule lettre en minuscules[A-Z]
signifie faire correspondre une seule lettre en haut de cas[a-za-z]
signifie correspondre à une seule lettre[A-ZA-Z 0-9]
signifie correspondre à une seule lettre ou numéro
Regardons un exemple ci-dessous:
# awk '/ [0-9] /print '/ etc / hôtesUtilisez awk pour imprimer les numéros correspondants dans le fichier
Toute la ligne du fichier / etc / hôtes contenir au moins un seul numéro [0-9]
Dans l'exemple ci-dessus.
Utilisez awk avec (^) Meta Caractor
Il correspond à toutes les lignes qui commencent par le modèle fourni comme dans l'exemple ci-dessous:
# awk '/ ^ fe /print '/ etc / hôtes # awk'/ ^ ff /print '/ etc / hôtesUtilisez awk pour imprimer toutes les lignes correspondantes avec le motif
Utilisez awk avec ($) Meta Caractère
Il correspond à toutes les lignes qui se terminent avec le modèle fourni:
# awk '/ ab $ /print '/ etc / hôtes # awk'/ OST $ /print '/ etc / hôtes # awk'/ rs $ /print '/ etc / hôtesUtilisez awk pour imprimer une chaîne de modèle donnée
Utiliser awk avec (\) le caractère d'échappement
Il vous permet de prendre le personnage qui le suive comme un littéral qui est de dire le considérer comme il est.
Dans l'exemple ci-dessous, la première commande imprime toutes les lignes du fichier, la deuxième commande n'imprime rien parce que je veux correspondre à une ligne qui a 25 $.00, Mais aucun caractère d'échappement n'est utilisé.
La troisième commande est correcte car un caractère d'évasion a été utilisé pour lire $ tel quel.
# awk '//print 'offres.txt # awk '/ 25 $.00 /print 'offres.txt # awk '/ \ 25 $.00 /print 'offres.SMSUtilisez awk avec le caractère d'échappement
Résumé
Ce n'est pas tout avec le awk outil de filtrage de ligne de commande, les exemples au-dessus des opérations de base de awk. Dans les parties suivantes, nous allons progresser sur la façon d'utiliser des fonctionnalités complexes de AWK. Merci d'avoir lu et pour tout ajouts ou clarifications, publiez un commentaire dans la section des commentaires.
- « SMEM - rapporte la consommation de mémoire par processus et la base par utilisateur à Linux
- Comment utiliser awk pour imprimer des champs et des colonnes dans le fichier »