Comment utiliser des expressions awk et régulières pour filtrer le texte ou la chaîne dans les fichiers

Comment utiliser des expressions awk et régulières pour filtrer le texte ou la chaîne dans les fichiers

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:

  1. Personnages ordinaires comme l'espace, souligner (_), A-Z, A-Z, 0-9.
  2. Meta personnages qui sont étendus aux personnages ordinaires, ils incluent:
    1. (.) il correspond à n'importe quel personnage unique sauf une nouvelle ligne.
    2. (*) il correspond à zéro ou plus d'existences du caractère immédiat qui le précédent.
    3. [ 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.
    4. ^ il correspond au début d'une ligne dans un fichier.
    5. $ correspond à la fin de la ligne dans un fichier.
    6. \ 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 

'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'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ôtes 
Awk 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ôtes 
Awk 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ôtes 
Utilisez 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 / localhost 
Utiliser 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ôtes 
Utilisation-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ôtes 
Utiliser awk pour imprimer une chaîne correspondante dans le fichier

Spécification des caractères dans une gamme

Comprendre les personnages avec awk:

  1. [0-9] signifie un seul numéro
  2. [A-Z] signifie faire correspondre une seule lettre en minuscules
  3. [A-Z] signifie faire correspondre une seule lettre en haut de cas
  4. [a-za-z] signifie correspondre à une seule lettre
  5. [A-ZA-Z 0-9] signifie correspondre à une seule lettre ou numéro

Regardons un exemple ci-dessous:

# awk '/ [0-9] /print '/ etc / hôtes 
Utilisez 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ôtes 
Utilisez 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ôtes 
Utilisez 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.SMS 
Utilisez 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.