Les services publics offrent que Linux suivent souvent la philosophie UNIX du design. Tout outil doit être petit, utiliser du texte brut pour les E / S et fonctionner de manière modulaire. Grâce à l'héritage, nous avons certaines des plus belles fonctionnalités de traitement de texte à l'aide d'outils comme SED et AWK.
Dans Linux, l'outil awk est préinstallé sur toutes les distros Linux. Awk lui-même est un langage de programmation. L'outil awk est juste un interprète du langage de programmation awk. Dans ce guide, consultez comment utiliser awk sur Linux.
Utilisation de awk
L'outil awk est le plus utile lorsque les textes sont organisés dans un format prévisible. C'est assez bon pour analyser et manipuler les données tabulaires. Il fonctionne sur une base ligne par ligne, sur l'ensemble du fichier texte.
Le comportement par défaut de AWK est d'utiliser des espaces blancs (espaces, onglets, etc.) pour la séparation des champs. Heureusement, de nombreux fichiers de configuration sur Linux suivent ce modèle.
Syntaxe de base
C'est à quoi ressemble la structure de commande de la commande.
$ awk '// ; ; '
Les parties de la commande sont assez explicites. Awk peut fonctionner sans la partie de recherche ou d'action. Si rien n'est spécifié, alors l'action par défaut sur le match ne sera que l'impression. Fondamentalement, AWK imprimera tous les matchs trouvés sur le fichier.
S'il n'y a pas de modèle de recherche spécifié, alors AWK effectuera les actions spécifiées sur chaque ligne du fichier.
Si les deux parties sont données, alors AWK utilisera le motif pour déterminer si la ligne actuelle le reflète. S'il est assorti, alors AWK effectue l'action spécifiée.
Notez que AWK peut également fonctionner sur des textes redirigés. Cela peut être réalisé en tuant le contenu de la commande pour agir sur. En savoir plus sur la commande Linux Pipe.
À des fins de démonstration, voici un exemple de fichier texte. Il contient 10 lignes, 2 mots par ligne.
$ échantillon de chat.SMS
Expression régulière
L'une des principales caractéristiques qui font de AWK un outil puissant est le support de l'expression régulière (regex, pour faire court). Une expression régulière est une chaîne qui représente un certain modèle de caractères.
Voici une liste de certaines des syntaxes d'expression régulière les plus courantes. Ces syntaxes regex ne sont pas seulement uniques à awk. Ce sont des syntaxes regex presque universelles, donc les maîtriser aideront également dans d'autres applications / programmes qui impliquent une expression régulière.
Impression du texte
Pour imprimer tout le contenu d'un fichier texte, utilisez la commande d'impression. Dans le cas du modèle de recherche, il n'y a pas de modèle défini. Alors, awk imprime toutes les lignes.
$ awk 'print' échantillon.SMS
Ici, «Print» est une commande awk qui imprime le contenu de l'entrée.
Recherche de cordes
Awk peut effectuer une recherche de texte de base sur le texte donné. Dans la section des modèles, ce doit être le texte pour trouver.
Dans la commande suivante, AWK recherchera le texte «rapide» sur toutes les lignes de l'échantillon de fichier.SMS.
$ awk '/ Quick /' échantillon.SMS
Maintenant, utilisons des expressions régulières pour affiner davantage la recherche. La commande suivante imprimera toutes les lignes qui ont «brune» au début.
$ awk '/ ^ brun /' échantillon.SMS
Que diriez-vous de trouver quelque chose à la fin d'une ligne? La commande suivante imprimera toutes les lignes qui ont «rapide» à la fin.
$ awk '/ Quick $ /' échantillon.SMS
Modèle de joker
L'exemple suivant va présenter l'utilisation du caret (.). Ici, il peut y avoir deux personnages avant le personnage «E».
$ awk '/… e /' échantillon.SMS
Modèle de joker (en utilisant l'astérisque)
Et s'il peut y avoir n'importe quel nombre de caractères sur place? Pour correspondre à n'importe quel caractère possible en position, utilisez l'astérisque (*). Ici, AWK correspondra à toutes les lignes qui ont n'importe quelle quantité de caractères après "le".
$ awk '/ l'échantillon * /'.SMS
Expression du support
L'exemple suivant va montrer comment utiliser l'expression du support. L'expression du support indique qu'à l'emplacement, le match sera valide s'il correspond à l'ensemble des caractères entourés des supports. Par exemple, la commande suivante correspondra à «le» et «tee» comme des correspondances valides.
$ awk '/ t [il] e /' échantillon.SMS
Il y a quelques jeux de caractères prédéfinis dans l'expression régulière. Par exemple, l'ensemble de toutes les lettres majuscules est étiquetée comme «A-Z». Dans la commande suivante, AWK correspondra à tous les mots qui contiennent une lettre majuscule.
$ awk '/ [a-z] /' échantillon.SMS
Jetez un œil à l'utilisation suivante des ensembles de caractères avec expression du support.
Variables prédéfinies awk
Awk est livré avec un tas de variables prédéfinies et automatiques. Ces variables peuvent faciliter les programmes d'écriture et les scripts avec awk.
Voici quelques-unes des variables awk les plus courantes que vous rencontrerez.
Voyons-les en action. La commande suivante utilisera la variable NR pour imprimer la ligne 2 à la ligne 4 à partir de l'échantillon.SMS. AWK prend également en charge les opérateurs logiques comme Logical et (&&).
$ awk 'nr> 1 && nr < 5' sample.txt
Pour attribuer une valeur spécifique à une variable awk, utilisez la structure suivante.
$ awk '// ; ; '= ,
Par exemple, pour supprimer toutes les lignes vides du fichier d'entrée, modifiez la valeur de Rs en rien. C'est une astuce qui utilise une règle POSIX obscure. Il spécifie que si la valeur de RS est une chaîne vide, alors les enregistrements sont séparés par une séquence qui se compose d'une nouvelle ligne avec une ou plusieurs lignes vierges. Dans POSIX, une ligne vierge sans contenu est complètement vide. Cependant, si la ligne contient des espaces blancs, il n'est pas considéré comme «vide».
$ awk 'print' rs = "échantillon.SMS
Ressources additionnelles
Awk est un outil puissant avec des tonnes de fonctionnalités. Bien que ce guide en couvre beaucoup, ce ne sont toujours que les bases. Masterring awk prendra plus que ça. Ce guide devrait être une belle introduction à l'outil.
Si vous voulez vraiment maîtriser l'outil, alors voici quelques ressources supplémentaires que vous devriez vérifier.
Internet est un bon endroit pour apprendre quelque chose. Il existe de nombreux tutoriels impressionnants sur les bases AWK pour les utilisateurs très avancés.
Pensée finale
Espérons que ce guide a aidé à fournir une bonne compréhension des bases AWK. Bien que cela puisse prendre un certain temps, la maîtrise AWK est extrêmement gratifiante en termes de puissance qu'il accorde.
Happy Computing!