GNU/Linux >> Tutoriels Linux >  >> Linux

La commande Linux AWK - Exemples de syntaxe d'utilisation Linux et Unix

Dans ce guide convivial pour les débutants, vous apprendrez les bases du awk commande. Vous verrez également quelques-unes des façons dont vous pouvez l'utiliser lorsque vous traitez du texte.

Commençons !

Qu'est-ce que le awk commande ?

awk est un langage de script, et il est utile lorsque vous travaillez dans la ligne de commande. C'est aussi une commande largement utilisée pour le traitement de texte.

Lors de l'utilisation de awk , vous pouvez sélectionner des données (un ou plusieurs éléments de texte individuel) en fonction d'un modèle que vous fournissez.

Par exemple, certaines des opérations que vous pouvez effectuer avec awk recherchez un mot ou un motif spécifique dans un morceau de texte donné, ou même sélectionnez une certaine ligne ou une certaine colonne dans un fichier que vous fournissez.

La syntaxe de base de awk commande

Dans sa forme la plus simple, le awk La commande est suivie d'un ensemble de guillemets simples et d'un ensemble d'accolades, avec le nom du fichier dans lequel vous souhaitez effectuer la recherche mentionné en dernier.

Cela ressemble à ceci :

awk '{action}' your_file_name.txt

Lorsque vous souhaitez rechercher un texte qui a un modèle spécifique ou que vous recherchez un mot spécifique dans le texte, la commande ressemblera à ceci :

awk '/regex pattern/{action}' your_file_name.txt

Comment créer un exemple de fichier

Pour créer un fichier en ligne de commande, vous utilisez le touch commande.
Par exemple :touch filename.txtfilename , est le nom de votre fichier.

Vous pouvez ensuite utiliser le open commande (open filename.txt ), et un programme de traitement de texte comme TextEdit s'ouvrira où vous pourrez ajouter le contenu du fichier.

Donc, disons que vous avez un fichier texte, information.txt , qui contient des données séparées dans différentes colonnes.

Le contenu du fichier pourrait ressembler à ceci :

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Dans mon exemple, il y a une colonne pour firstName , lastName , age , city , et ID .

A tout moment, vous pouvez visualiser la sortie du contenu de votre fichier en tapant cat text_file , où text_file est le nom de votre fichier.

Comment imprimer tout le contenu du fichier en utilisant awk

Pour imprimer tous le contenu d'un fichier, l'action que vous spécifiez à l'intérieur des accolades est print $0 .

Cela fonctionnera exactement de la même manière que le cat commande mentionnée précédemment.

awk '{print $0}' information.txt

Sortie :

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Si vous souhaitez que chaque ligne ait un nombre de lignes, vous utiliserez le NR variable intégrée :

awk '{print NR,$0}' information.txt 
1 fristName     lastName        age     city       ID
2 
3 Thomas        Shelby          30      Rio        400
4 Omega         Night           45      Ontario    600
5 Wood          Tinker          54      Lisbon     N/A
6 Giorgos       Georgiou        35      London     300
7 Timmy         Turner          32      Berlin     N/A

Comment imprimer des colonnes spécifiques en utilisant awk

Lors de l'utilisation de awk , vous pouvez spécifier certaines colonnes que vous souhaitez imprimer.

Pour faire imprimer la première colonne, vous utilisez la commande :

awk '{print $1}' information.txt

Sortie :

Thomas
Omega
Wood
Giorgos
Timmy

Le $1 représente le premier champ, dans ce cas la première colonne.

Pour imprimer la deuxième colonne, vous utiliseriez $2 :

awk '{print $2}' information.txt

Sortie :

lastName

Shelby
Night
Tinker
Georgiou
Turner

La façon dont awk détermine où chaque colonne commence et se termine avec un espace, par défaut.

Pour imprimer plus d'une colonne, par exemple les première et quatrième colonnes, vous feriez :

awk '{print $1, $4}' information.txt

Sortie :

fristName city
 
Thomas    Rio
Omega     Ontario
Wood      Lisbon
Giorgos   London
Timmy     Berlin

Le $1 représente le premier champ de saisie (première colonne), et le $4 représente le quatrième. Vous les séparez par une virgule, $1,$4 , de sorte que la sortie comporte un espace et est plus lisible.

Pour imprimer le dernier champ (la dernière colonne), vous pouvez aussi utiliser $NF qui représente le dernier champ dans un enregistrement :

awk '{print $NF}' information.txt 

Sortie :

ID

400
600
N/A
300
N/A

Comment imprimer des lignes spécifiques d'une colonne

Vous pouvez également spécifier la ligne que vous souhaitez imprimer à partir de la colonne de votre choix :

awk '{print $1}' information.txt | head -1 

Sortie :

FirstName

Décomposons cette commande. awk '{print $1}' information.txt imprime la première colonne. Ensuite, la sortie de cette commande (que vous avez vue plus tôt) est canalisée , en utilisant le symbole pipe | , à la commande principale, où son -1 l'argument sélectionne la première ligne de la colonne.

Si vous vouliez imprimer deux lignes, vous feriez :

awk '{print $1}' information.txt | head -2 

Sortie :

FirstName
Dionysia

Comment imprimer des lignes avec un motif spécifique dans awk

Vous pouvez imprimer une ligne qui commence avec une lettre spécifique.

Par exemple :

awk '/^O/' information.txt

Sortie :

Omega           Night           45      Ontario    600

Cette commande sélectionne n'importe quelle ligne avec du texte qui commence avec un O .

Vous utilisez le symbole flèche vers le haut (^ ) d'abord, qui indique le début d'une ligne, puis la lettre par laquelle vous voulez qu'une ligne commence.

Vous pouvez également imprimer une ligne qui se termine dans un modèle spécifique :

awk '/0$/' information.txt 

Sortie :

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

Cela imprime les lignes qui se terminent par un 0 – le $ Le symbole est utilisé après un caractère pour indiquer comment une ligne se terminera.

Cette commande pourrait également être changée en :

awk '! /0$/' information.txt 

Le ! est utilisé comme NOT , donc dans ce cas, il sélectionne les lignes qui NE se terminent PAS par un 0 .

fristName       lastName        age     city       ID

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Comment utiliser les expressions régulières dans awk

Pour sortir des mots qui contiennent certaines lettres et imprimer des mots qui correspondent à un modèle que vous spécifiez, vous utilisez à nouveau les barres obliques, // , montré précédemment.

Si vous souhaitez rechercher des mots contenant on , vous feriez :

awk ' /io/{print $0}' information.txt 

Sortie :

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

Cela correspond à toutes les entrées qui contiennent io .

Disons que vous aviez une colonne supplémentaire - un department colonne :

fristName       lastName        age     city       ID   department

Thomas          Shelby          30      Rio        400  IT
Omega           Night           45      Ontario    600  Design
Wood            Tinker          54      Lisbon     N/A  IT
Giorgos         Georgiou        35      London     300  Data
Timmy           Turner          32      Berlin     N/A  Engineering

Pour trouver toutes les informations des personnes travaillant dans IT , vous devrez spécifier la chaîne que vous recherchez entre les barres obliques, // :

awk '/IT/' information.txt 

Sortie :

Thomas          Shelby          30      Rio        400  IT
Wood            Tinker          54      Lisbon     N/A  IT

Et si vous vouliez voir uniquement les noms et prénoms des personnes travaillant dans IT ?

Vous pouvez spécifier la colonne comme suit :

awk '/IT/{print $1, $2}' information.txt 

Sortie :

Thomas Shelby
Wood   Tinker

Cela n'affichera que les première et deuxième colonnes où IT apparaît, au lieu de présenter tous les champs.

Lors de la recherche de mots avec un modèle spécifique, il peut arriver que vous deviez utiliser un caractère d'échappement, comme celui-ci :

awk '/N\/A$/' information.txt 

Sortie :

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Je voulais trouver des lignes qui se terminent par le motif N/A .

Ainsi, lors de la recherche entre le ' // ' comme indiqué jusqu'à présent, j'ai dû utiliser un caractère d'échappement (\ ) entre N/A , sinon j'aurais eu une erreur.

Comment utiliser les opérateurs de comparaison dans awk

Si, par exemple, vous vouliez trouver toutes les informations des employés qui avaient moins de 40 , vous utiliseriez le < opérateur de comparaison comme ceci :

awk '$3 <  40 { print $0 }' information.txt

Sortie :

Thomas          Shelby          30      Rio        400
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

La sortie affiche uniquement les informations des personnes de moins de 40 ans.

Conclusion

Et voila! Vous connaissez maintenant les bases absolues pour commencer à travailler avec awk et manipuler des données textuelles.

Pour en savoir plus sur Linux, freeCodeCamp propose une grande variété de supports d'apprentissage.

En voici quelques-unes pour vous aider à démarrer :

  • Principes de base de Linux – Atelier pratique
  • Linux pour les hackers éthiques (tutoriel Kali Linux)
  • Le manuel des commandes Linux

Merci d'avoir lu et bon apprentissage 😊


Linux
  1. La commande Linux Sed :utilisation et exemples

  2. 5 exemples pratiques de la commande dd sous Linux

  3. UNIX / Linux :10 exemples de commandes Netstat

  4. 10 exemples de commandes Xargs sous Linux / UNIX

  5. Exemples de commandes awk sous Linux

Commande Linux awk avec 10 exemples

Options de commande et exemples de commande Tee sous Linux

50 commandes de coupe Linux simples et utiles sous Unix avec des exemples

Les 50 exemples pratiques de la commande SED sous Linux

Exemples essentiels de la commande ps sous Linux

Commande AWK sous Linux/Unix