Recherche de site Web

Commande Linux awk


Sur cette page

  1. La commande awk
  2. Syntaxe de base
  3. maladroit Exemples
  4. Foire aux questions
  5. Conclusion

Parmi les nombreux outils de traitement de texte disponibles sur le shell Linux, awk se démarque par sa puissance et sa polyvalence. Développé à l'origine dans les années 1970 par Aho, Weinberger et Kernighan, awk est plus qu'une simple commande : c'est un langage de programmation complet conçu pour traiter et analyser des fichiers texte.

La commande awk

awk fonctionne sur les fichiers et les flux comme une séquence d'enregistrements et de champs. Par défaut, un enregistrement est défini sous forme de ligne et les champs sont séparés par des espaces, bien que les deux puissent être redéfinis.

Syntaxe de base

La syntaxe de base de awk est :

awk 'pattern {action}' file
  • Modèle : Spécifie quand l’action doit être effectuée. En cas d'omission, l'action s'applique à chaque ligne.
  • Action : un ensemble de commandes exécutées lorsque le modèle correspond. Les actions sont placées entre accolades {}.

maladroit Exemples

Imprimer la première colonne d'un fichier

awk '{print $1}' file.txt

Cette commande imprime le premier champ de chaque enregistrement (généralement, le premier mot de chaque ligne) à partir du fichier.txt.

Somme et moyenne d'une colonne

awk '{sum+=$2; count++} END {print "Sum =", sum; print "Average =", sum/count}' file.txt

Cette commande calcule la somme et la moyenne des valeurs de la deuxième colonne du fichier.txt.

Filtrage basé sur une condition

awk '$3 > 100' file.txt

Cela affiche les lignes du fichier.txt où le troisième champ est supérieur à 100.

Foire aux questions

Comment changer le séparateur de champs dans awk ?

Utilisez l'option -F suivie du séparateur souhaité. Par exemple, awk -F, '{print $2}' file.csv imprimera le deuxième champ d'un fichier CSV.

Awk peut-il gérer plusieurs fichiers à la fois ?

Oui, awk peut traiter plusieurs fichiers séquentiellement. Utilisez awk '{print}' file1.txt file2.txt pour traiter file1.txt et file2.txt consécutivement.

Comment puis-je intégrer awk aux variables shell ?

Vous pouvez transmettre des variables shell à awk en utilisant l'option -v. Par exemple, var="valeur" ; awk -v awkVar="$var" '{print awkVar}' file.txt imprimera la valeur de la variable shell var pour chaque ligne du fichier.txt.

Est-il possible de modifier un fichier sur place à l'aide de awk ?

Non, awk ne prend pas directement en charge l'édition sur place comme sed -i. Cependant, vous pouvez y parvenir en redirigeant la sortie d'awk vers un fichier temporaire, puis en le renommant dans le fichier d'origine.

Awk peut-il être utilisé pour le traitement de texte complexe ?

Absolument. Bien que awk soit simple pour les tâches de base, il est également suffisamment puissant pour le traitement de texte complexe. Il prend en charge les tableaux, les fonctions et les expressions régulières, ce qui le rend adapté à diverses tâches de manipulation de texte.

Conclusion

La commande awk est un outil de traitement de texte en ligne de commande polyvalent pour les systèmes Unix. Ses fonctionnalités simples mais robustes en font un outil indispensable pour toute personne travaillant avec des fichiers texte – de l'analyse des journaux à l'extraction de données. En maîtrisant awk, les utilisateurs peuvent exploiter tout le potentiel de la manipulation de texte sous Linux.

Articles connexes: