Recherche de site Web

Comment imprimer des champs et des colonnes avec awk sous Linux


Awk est un puissant outil de traitement de texte qui permet une manipulation et une extraction efficaces d’informations à partir de fichiers, en particulier pour la gestion de données structurées telles que les fichiers journaux, les fichiers CSV, etc.

L’une de ses fonctionnalités les plus polyvalentes est la possibilité d’imprimer des champs et des colonnes spécifiques à partir d’un fichier en fonction de délimiteurs prédéfinis.

Dans cet article, nous allons explorer comment tirer parti d’Awk pour imprimer des champs et des colonnes, en fournissant des exemples pratiques et des explications pour démontrer son efficacité.

Dans Awk, un « champ » fait référence à un segment spécifique de texte à l’intérieur d’une ligne, délimité par un séparateur prédéfini tel qu’un espace, une tabulation ou une virgule. Un numéro de champ est attribué à chaque segment, le premier étant 1 $, le second 2 $, et ainsi de suite.

De même, une « colonne » représente un regroupement vertical de champs sur plusieurs lignes. En utilisant les capacités d’Awk, nous pouvons imprimer ou manipuler de manière sélective ces champs et colonnes pour extraire des informations précieuses de nos données.

Il est bon de savoir qu’Awk divise automatiquement les lignes d’entrée qui lui sont fournies en champs, et qu’un champ peut être défini comme un ensemble de caractères séparés des autres champs par un séparateur de champ interne.

Si vous êtes familier avec Unix/Linux ou si vous faites de la programmation shell bash, vous devriez savoir ce qu’est la variable de séparateur de champs interne (IFS). Les IFS par défaut dans Awk sont la tabulation et l’espace.

Pour mieux comprendre cette édition de champ Awk, jetons un coup d’œil aux exemples ci-dessous :

Utilisez awk pour imprimer des champs à partir d’un fichier

Pour imprimer des champs spécifiques à partir d’un fichier à l’aide d’Awk, vous pouvez utiliser l’instruction « print » avec les variables de champ souhaitées.

Par exemple, pour imprimer les premier, deuxième et troisième champs d’un fichier séparés par une virgule, nous pouvons utiliser la commande suivante :

awk '{print $1 "," $2 "," $3}' tecmintinfo.txt

Dans la commande ci-dessus, vous pouvez voir que les caractères des trois premiers champs sont imprimés en fonction de l’IFS défini qui est l’espace :

  • Le premier champ « TecMint.com » est accessible à l’aide de $1.
  • Le champ deux, qui est « est », est accessible à l’aide de $2.
  • Le champ trois, qui est « le », est accessible à l’aide de 3 $.

Une chose importante à noter et à toujours garder à l’esprit est que l’utilisation de ($) dans Awk est différente de son utilisation dans le script shell.

Dans le script shell, ($) est utilisé pour accéder à la valeur des variables, tandis que dans Awk, ($) n’est utilisé que pour accéder au contenu d’un champ, et non pour accéder à la valeur des variables.

Utilisez awk pour imprimer des colonnes à partir d’un fichier

Pour imprimer des colonnes entières à partir d’un fichier, nous pouvons utiliser une approche similaire en spécifiant les champs souhaités dans l’instruction « print ». Cependant, cette fois-ci, nous considérons que plusieurs lignes représentent collectivement la colonne.

Par exemple, pour imprimer les deuxième et troisième colonnes d’un fichier, nous pouvons utiliser la commande suivante :

awk '//{print $2, $3 }' my_shopping.txt

Awk dispose également d’une commande printf qui vous aide à formater votre sortie, ce qui est une bonne façon car vous pouvez voir que la sortie ci-dessus n’est pas assez claire.

Utilisation de printf pour formater la sortie du Item_Name et de la Unit_Price :

awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt

Utilisez awk pour imprimer des plages de champs et de colonnes à partir d’un fichier

Awk nous permet également de définir des plages de champs ou de colonnes à l’aide de l’opérateur « : ». Par exemple, pour imprimer les champs 2 à 4 à partir d’un fichier, nous pouvons utiliser la commande suivante.

awk '{print $2 ":" $4}' filename

Résumé

L’édition de champs est très importante lorsque vous utilisez Awk pour filtrer du texte ou des chaînes, elle vous aide à obtenir des données particulières dans les colonnes d’une liste. Et rappelez-vous toujours que l’utilisation de l’opérateur ($) dans Awk est différente de celle dans les scripts shell.

Pour ceux qui recherchent une ressource complète, nous avons compilé tous les articles de la série Awk dans un livre, qui comprend 13 chapitres et s’étend sur 41 pages, couvrant à la fois l’utilisation de base et avancée d’Awk avec des exemples pratiques.

Nom du produitPrixAcheter
eBook : Présentation du guide de démarrage Awk pour les débutants8,99 $[Acheter maintenant]

J’espère que l’article vous a été utile et pour toute information supplémentaire requise ou question, vous pouvez poster un commentaire dans la section des commentaires.

Articles connexes: