GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Linux awk avec 10 exemples

Les systèmes informatiques ont toujours été utilisés pour analyser des données précieuses stockées dans de simples fichiers texte. À leur tour, les systèmes informatiques eux-mêmes sont gérés via des fichiers journaux. Ce qui est potentiellement commun dans ces deux situations, c'est qu'elles contiennent une grande quantité de données, qui doivent souvent être rationalisées avant de réellement lire les données ; sinon, c'est juste déroutant.

Par exemple, si vous lisez des données disposées sous forme de tableau, vous voulez des colonnes, vous ne voulez pas d'autres.

Cette exigence était déjà terrible à l'époque, et par conséquent, le projet GNU contient un outil incroyable qui aide les utilisateurs à filtrer et extraire des données pour une meilleure expérience. Cet outil est AWK .

Historique

AWK est en fait un langage de programmation dédié au traitement de texte. Il est utilisé pour l'extraction de données dans des modèles spécifiques. Il a été développé dans les années 1970 par les Bell Labs, par Alfred Aho, Peter Weinberger et Brian Kernighan (les initiales de leurs noms de famille ont donné naissance au nom). Le développement d'awk ne s'est pas arrêté là. Une nouvelle version est introduite en 1985, qui a apporté de nouvelles modifications à la commande awk, notamment la possibilité de gérer plusieurs flux d'entrée, des expressions régulières calculées, des fonctions définies par l'utilisateur et bien plus encore ! En bref, la mise à jour en a fait un langage de programmation plus puissant.

Awk a une mise en œuvre différente. Pour s'assurer qu'il existe une implémentation appropriée qui offre une approche standard, Paul Rubin a écrit gawk en 1986. Cela fonctionnait bien avec le nouveau awk.

En dehors de cela, dans la version System V de 1989, de nouvelles fonctionnalités ont été ajoutées. Les développeurs ont également amélioré ses coins sombres, ce qui permet aux programmeurs et aux utilisateurs de mieux l'utiliser. Le dernier changement s'est produit en 1997 lorsque awk a vu l'accès au réseau, offrant aux utilisateurs la possibilité de résoudre les problèmes à distance.

La dernière réécriture faite en 2011 lorsque John Haque a réécrit les internes gawk.

Ce que vous pouvez faire avec AWK

À présent, il devrait être quelque peu clair de quoi AWK est capable. Il s'agit d'un langage de script à usage général qui vous permet de gérer le traitement de texte. Les utilisateurs avancés peuvent également l'utiliser pour l'analyse et la création de rapports.

AWK n'est pas comme les autres langages de programmation car il est basé sur les données, plutôt qu'un langage de programmation procédural. Cela signifie que vous pouvez l'utiliser efficacement pour effectuer des actions contre la saisie de texte. En bref, vous pouvez l'utiliser pour transformer des données, les saisir et également les envoyer en tant que sortie standard.

En bref, vous pouvez utiliser AWK pour effectuer des opérations simples telles que diviser chaque ligne d'entrée en champs, analyser un fichier ligne par ligne, effectuer une ou plusieurs actions sur les lignes de correspondance, etc. ! La commande awk est également utile pour les rapports au format de procédure et transforme les fichiers de données. De plus, vous avez également accès à des constructions de programmation telles que des conditions et des boucles, des opérations de chaîne et arithmétiques et des lignes de sortie de format.

Comment fonctionne awk

Dans cette section, nous allons apprendre comment fonctionne awk. Il est important d'apprendre que awk a différentes implémentations. Pour nous assurer que nous sommes sur la même longueur d'onde, nous discuterons et utiliserons l'implémentation GNU - qui est populairement connue sous le nom de gawk. Dans la plupart des cas, le gawk est lié symboliquement à l'interpréteur awk.

Pour bien comprendre, nous devons d'abord comprendre les enregistrements et les champs.

Il est bien connu que awk peut traiter des flux textuels et des fichiers de données. Pour traiter les données, l'entrée est divisée en champs et en enregistrements. Pour s'assurer que awk ne soit pas submergé, un enregistrement est traité à tout moment jusqu'à ce que la fin de l'entrée soit atteinte. De plus, les enregistrements sont ensuite divisés en sections simples à l'aide d'un séparateur d'enregistrements utilisant des caractères. En outre, chaque enregistrement est séparé à l'aide de caractères de retour à la ligne. Cela signifie que chaque ligne peut être qualifiée d'enregistrement.

Vous pouvez choisir de définir un nouveau séparateur d'enregistrements à l'aide de la variable RS.

Vient ensuite le séparateur déposé. Comme d'habitude, chaque enregistrement a des champs, et ils sont séparés à l'aide du séparateur de champs. Le séparateur de champ peut être un espace blanc, des tabulations, des caractères de retour à la ligne et un espace. De plus, chaque champ est référencé à l'aide du symbole $, tandis que le numéro de champ commence par 1. Cela signifie que le premier champ peut être noté $1 tandis que le second champ est noté $2. De cette façon, le nième champ peut être noté $nf.

Le programme awk

Le deuxième aspect d'awk est le programme awk. Si vous voulez travailler avec awk, vous devez écrire un programme qui permet à la commande d'exécuter ou de traiter le texte. Le programme awk offre de nombreuses fonctionnalités utilisant des règles et des fonctions définies par l'utilisateur. Les règles fonctionnent avec une paire d'actions ou un modèle, et les règles sont séparées par des points-virgules ou des retours à la ligne.

Au cas où vous vous poseriez la question, un programme awk ressemblera à ci-dessous.

pattern { action }
pattern { action }
....

En bref, le programme awk fonctionne en faisant correspondre les enregistrements en fonction de modèles. Si le modèle est trouvé dans l'enregistrement, il le traitera. Si ce n'est pas le cas, l'ensemble de l'enregistrement est mis en correspondance pour s'assurer que quelque chose correspond en fonction des règles.

Exemples de commandes awk

Maintenant que nous avons une bonne compréhension de la commande awk et de son fonctionnement, il est maintenant temps pour nous de découvrir quelques-uns des exemples de commande awk.

Si vous n'avez jamais utilisé awk auparavant, sachez que awk peut être utilisé avec des options comme ci-dessous :

awk options program file

Les options que vous pouvez utiliser avec awk incluent les suivantes :

  • – fichier f :il est utilisé pour spécifier le fichier qui contient le script awk
  • -F fs :Il est utilisé pour spécifier le séparateur de fichiers.
  • -v var=value :Il est utilisé pour déclarer une variable.

Exemple 1 :Lire des scripts AWK

L'une des façons les plus courantes d'utiliser awk consiste à lire des scripts. En tant qu'utilisateur Linux, vous pouvez créer un script awk en utilisant les guillemets simples.

Pour ce faire, vous devez taper la commande suivante dans le terminal.

$awk '{print "Welcome to Hello, World -- AWK tutorial"}'

Dans l'exemple ci-dessus, ce que vous tapez, il sera renvoyé à l'écran lui-même. La commande continuera à s'exécuter jusqu'à ce que vous la terminiez en appuyant sur CTRL + D.

Exemple 2 :Utilisation de plusieurs commandes

Une autre utilisation courante de awk consiste à utiliser plusieurs commandes. En tant qu'utilisateur, vous souhaiterez peut-être combiner deux commandes awk en une seule pour obtenir le résultat souhaité. Dans cet exemple, nous allons générer une chaîne, puis remplacer le deuxième mot de la chaîne par une nouvelle entrée.

$echo "Hello World" | awk '{$2 = "Universe; print $0"}'

Dans l'exemple ci-dessus, nous avons d'abord fait écho, "Hello, World" au terminal. Ensuite, nous avons concaténé une autre commande awk dans laquelle nous avons remplacé le deuxième mot par Universe, puis avons finalement sorti la chaîne, qui est Hello Universe.

Exemple 3 :Utilisation de variables

Les variables vous permettent de stocker des informations et d'y accéder. Si vous avez déjà utilisé des langages de programmation, vous les connaissez sûrement. Dans le cas d'awk, vous l'utilisez pour traiter des fichiers texte. En utilisant les variables, vous pouvez accéder à certains champs de données dans le fichier comme ci-dessous.

À cette fin, nous avons créé un nouveau fichier texte, monnouveaufichier, dans lequel nous saisissons des lignes aléatoires mais belles.

Ensuite, vous devez exécuter la commande, comme indiqué ci-dessous.

awk '{print $1}' mynewfile

Comme vous pouvez le voir, il génère cette variable particulière qui affiche ce champ du fichier. De plus, vous devriez voir l'erreur que j'ai commise.

Exemple 4 :Prétraitement AWK

Avec la commande awk, vous pouvez ajouter un prétraitement. Pour ce faire, vous devez utiliser le mot-clé BEGIN.

Si vous lisez attentivement, nous avons créé un nouveau fichier ci-dessus. Essayons d'utiliser le prétraitement awk pour présenter le contenu du fichier.

La commande pour cela est comme ci-dessous.

awk 'awk BEGIN {print "The content of the file:"}
> {print $0}' , mynewfile

L'exemple de capture d'écran ci-dessus n'est pas correct. J'ai utilisé "Begin" au lieu de "BEGIN", c'est pourquoi vous ne voyez pas l'instruction d'impression s'exécuter. Je vous laisse essayer et voir comment votre résultat se passe !

Exemple 5 :Lecture d'un script à partir d'un fichier

Celui-ci est délicat. Ici, vous pouvez utiliser le script awk pour lire un fichier.

Nous créons un nouveau script qui contient les éléments suivants.

{print $1 "universe starts at " $6"}

Nous avons enregistré le fichier en tant que nouveau script.

Maintenant, exécutez la commande suivante sur le terminal.

$awk -F: -f newscript /etc/passwd

Fascinant, n'est-ce pas !

Exemple 6 :Post-traitement AWK

Ensuite, nous examinons le post-traitement AWK. Cela fonctionne de la même manière que le pré-traitement, mais cette fois, le post-traitement utilise la commande END.

$ awk 'BEGIN {print "The file content starts now:"}
>
> {print $0}
>
> END {print "The File ends"}' mynewfile

Exemple 7 :Variables définies par l'utilisateur

Vous pouvez également utiliser des variables dans la commande awk sans utiliser de chiffre ou de signe dollar.

Ci-dessous un exemple.

$awk '
BEGIN{
test = "Welcome to FossLinux Awesome Linux Family"
print test
}
'

Exemple 8 :Fonctions intégrées

Les commandes awk sont également utiles avec leurs fonctions intégrées. Par exemple, vous pouvez utiliser des fonctions mathématiques, ainsi que des fonctions de chaîne.

$ awk 'BEGIN {x - "fossLinux"; print toupper(x)}'
$ awk 'BEGIN {x=exp(35); print x}'

Exemple 9 :formatage de l'impression

Vous pouvez également formater la fonction printf fournie avec awk. Il existe de nombreux modificateurs que vous pouvez utiliser. Par exemple, vous pouvez utiliser c pour imprimer sous forme de chaîne; vous pouvez également utiliser d pour une valeur entière, et ainsi de suite.

$ awk 'BEGIN {
x = 200 * 200
printf "The result is: %e\n", x
}'

Exemple 10 :Commandes structurées

Vous pouvez également utiliser des commandes structurées telles que if, else, while ou for loop. Voyons l'exemple ci-dessous pour la commande if.

$ awk '{if ($1 > 20) print $2}' mynewfile

Conclusion

Cela nous amène à la fin de notre didacticiel sur la commande awk. Alors, l'avez-vous trouvé utile et allez-vous l'utiliser pour votre travail ? Commentez ci-dessous et faites-le nous savoir.


Linux
  1. Commande Linux wc avec exemples

  2. Commande de tri Linux avec exemples

  3. Commande Linux Tee avec exemples

  4. Commande principale Linux avec exemples

  5. Commande JQ sous Linux avec exemples

Commande de CD Linux avec exemples

Commande Linux watch avec exemples

Commande Wait sous Linux avec des exemples

Commande d'exportation Linux avec exemples

Commande de redémarrage sous Linux avec des exemples

Commande IP Linux avec exemples