Awk - une introduction et un tutoriel

Awk - une introduction et un tutoriel

Lorsque vous travaillez avec Linux, l'un des outils les plus puissants disponibles pour le traitement de texte est la commande awk. Il s'agit d'un outil de ligne de commande polyvalente qui peut être utilisé pour un large éventail de tâches, y compris la recherche, le filtrage et la manipulation de données de texte.

Dans cet article, nous couvrirons les bases de AWK, y compris sa syntaxe, comment l'utiliser sur la ligne de commande et quelques exemples de base de la façon dont il peut être utilisé pour traiter les données de texte.

Qu'est-ce que Awk?

Awk est un langage de programmation conçu pour le traitement de texte et l'extraction de données. Il a été développé à Bell Labs dans les années 1970 et est maintenant une caractéristique standard de la plupart des systèmes d'exploitation basés sur UNIX, y compris Linux.

AWK est particulièrement utile pour le traitement des fichiers texte, car il vous permet de rechercher, de filtrer et de manipuler des données en fonction de modèles ou de conditions spécifiques. Il fonctionne en lisant les données d'un fichier ou d'une entrée standard, en appliquant un ensemble de règles ou de commandes à ces données, puis en imprimant les résultats.

Syntaxe awk

La syntaxe de base d'une commande awk est la suivante:

Fichier awk 'motif action'
1Fichier awk 'motif action'

Ici, le modèle spécifie les conditions qui doivent être remplies pour que l'action soit effectuée, et le fichier spécifie le fichier sur lequel la commande doit fonctionner. Si aucun fichier n'est spécifié, AWK lira les données de l'entrée standard (i.e., le clavier).

Le motif peut être une expression régulière ou une plage de valeurs, et l'action peut être n'importe quelle commande awk valide, y compris les instructions d'impression, les variables et les boucles.

Instructions à une ligne awk

L'une des grandes choses à propos de AWK est qu'elle peut être utilisée pour écrire des lignes de ligne - des commandes courtes et puissantes qui peuvent être exécutées directement à partir de la ligne de commande.

Voici quelques exemples de lineurs awk que vous pouvez utiliser pour effectuer des tâches de traitement de texte courantes:

  • Imprimez la première colonne d'un fichier CSV:
    awk -f "," 'print $ 1' fichier.CSV  
  • Imprimez des colonnes spécifiques d'un fichier CSV:
    awk -f "," 'print $ 1, $ 3' fichier.CSV  

    Cette commande utilise l'option -f pour spécifier que le fichier est séparé des virgules, puis imprime les première et troisième colonnes du fichier.

  • Comptez le nombre de lignes dans un fichier:
    Fichier awk 'end imprimer nr'.SMS  
  • Imprimez toutes les lignes qui correspondent à un modèle spécifique ::
    Fichier awk '/ motive / print'.SMS  
  • Comptez le nombre d'occurrences d'un modèle dans un fichier:
    awk '/ patron / count ++ end print count' fichier.SMS  
  • Imprimez la dernière ligne d'un fichier:
    fichier awk 'end print'.SMS  
  • Imprimez la valeur moyenne d'une colonne dans un fichier:
    awk 'sum + = $ 2 end imprimer sum / nr' fichier.SMS  
  • Imprimez la moyenne de la deuxième colonne dans un fichier:
    awk 'sum + = $ 2 end imprimer sum / nr' fichier.SMS  
  • Imprimez les lignes dans l'ordre inverse:
    awk 'a [i ++] = $ 0 end for (j = i-1; j> = 0;) imprimer un fichier [j--]'.SMS  
  • Imprimez le contenu d'un fichier:
    fichier awk 'print'.SMS  

    Cette commande lit simplement le contenu du fichier.txt et imprime chaque ligne à l'écran.

  • Recherchez des lignes contenant un modèle spécifique:
    Fichier awk '/ error / print'.enregistrer  

    Cette commande recherche des lignes qui contiennent le mot «erreur» et les impriment à l'écran.

Vous aimerez peut-être: Awk Arithmetic Operations: A débutant Guide des méthodes de calcul de base

Awk pour l'administration du système

Voyons maintenant quelques exemples pratiques de la façon dont Awk peut être utilisé pour les tâches d'administration du système.

Analyse des fichiers journaux

Les fichiers journaux sont un outil essentiel pour les administrateurs système afin de surveiller les performances du système et de diagnostiquer les problèmes. Cependant, ils peuvent être difficiles à lire et à analyser, surtout lorsqu'ils contiennent de grandes quantités de données.

Awk peut être utilisé pour analyser les fichiers journaux et extraire des informations pertinentes. Par exemple, la commande suivante extrait toutes les adresses IP à partir d'un fichier journal d'accès Apache:

awk 'print $ 1' Access.enregistrer
1awk 'print $ 1' Access.enregistrer

Cette commande imprimera la première colonne du fichier journal d'accès, qui contient l'adresse IP du client.

Surveillance des ressources du système

AWK peut également être utilisé pour surveiller les ressources système, telles que le processeur et l'utilisation de la mémoire. Par exemple, la commande suivante affichera les 5 principaux processus consommant le plus de processeur:

PS aux Aux | awk 'print $ 2, $ 3, $ 11' | Trier -k2rn | tête -N5
1PS aux Aux | awk 'print $ 2, $ 3, $ 11' | Trier -k2rn | tête -N5

Cette commande utilisera PS pour répertorier tous les processus en cours d'exécution, puis utiliser AWK pour extraire l'ID de processus, l'utilisation du processeur et le nom du processus. La commande de tri est utilisée pour trier la sortie par utilisation du processeur, et la commande de tête est utilisée pour afficher uniquement les 5 premiers résultats.

Génération de rapports

Les administrateurs système doivent souvent générer des rapports sur divers aspects des performances du système et de l'utilisation. AWK peut être utilisé pour extraire et résumer les données à partir de fichiers journaux, de fichiers système et d'autres sources.

Par exemple, la commande suivante générera un rapport sur l'utilisation du disque de tous les systèmes de fichiers montés:

DF -H | awk 'print $ 1, $ 5'
1DF -H | awk 'print $ 1, $ 5'

Cette commande utilisera DF pour répertorier tous les systèmes de fichiers montés, puis utiliser AWK pour extraire le nom du système de fichiers et le pourcentage d'espace disque utilisé.

Modification des fichiers de configuration

Les fichiers de configuration sont un élément essentiel de l'administration du système et doivent souvent être modifiés pour optimiser les performances du système ou résoudre les problèmes. Awk peut être utilisé pour modifier les fichiers de configuration en place, sans avoir besoin d'édition manuelle.

Par exemple, la commande suivante remplacera toutes les occurrences de «localhost» par «exemple.com »dans le fichier de configuration Apache:

awk 'gsub (/ localhost /, "Exemple.com "); print '/ etc / apache2 / apache2.conf> / tmp / apache2.confli
1awk 'gsub (/ localhost /, "Exemple.com "); print '/ etc / apache2 / apache2.conf> / tmp / apache2.confli

Cette commande utilisera AWK pour rechercher la chaîne «localhost» dans le fichier de configuration Apache, et la remplacer par «Exemple.com ». Le fichier de configuration modifié est ensuite écrit dans un fichier temporaire.

Conclusion

Awk est un outil puissant pour le traitement de texte et l'extraction de données dans Linux. Il est relativement facile à apprendre et fournit un large éventail de capacités qui peuvent être utilisées pour manipuler et transformer des données de texte.

Dans cet article, nous avons couvert les bases de AWK, y compris sa syntaxe, comment l'utiliser sur la ligne de commande et quelques exemples de base de la façon dont il peut être utilisé pour traiter les données de texte. Nous avons également couvert AWK One-Liners, qui sont des commandes puissantes qui peuvent être utilisées pour effectuer des tâches de traitement de texte courantes avec un minimum d'effort.

Avec ces connaissances, vous pouvez commencer à explorer des fonctionnalités plus avancées de AWK, y compris des expressions, des variables et des fonctions régulières. En maîtrisant AWK, vous pouvez devenir un utilisateur Linux plus efficace et efficace, capable de traiter facilement de grandes quantités de données de texte.