NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
FR

Commandes Linux et compétences Shell

awk : Quand les colonnes deviennent des programmes

awk est ce que vous recherchez lorsque les colonnes deviennent l'unité de travail : les journaux d'accès nginx, /etc/passwd, la sortie df, tout ce qui vit dans les champs. Il s'agit d'un langage complet (variables, tableaux, arithmétique, règles d'action de modèle) vêtu d'une seule ligne, ce qui est exactement le bon déguisement pour la criminalistique des journaux. La limite honnête : tout ce que awk fait confortablement est une ligne unique, et tout ce qui nécessite une page de blocs est un script Python qui ne s'est pas encore admis.

Points clés

  • Le fractionnement des champs est l'astuce principale : awk -F: '$3 >= 1000 {print $1}' /etc/passwd répertorie les vrais utilisateurs, et -F'[,|]' gère les délimiteurs à plusieurs caractères lorsque cut a déjà abandonné.
  • Compte avec des tableaux associatifs : awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure transforme n'importe quel journal en table de fréquence sur une seule ligne.
  • NR et NF répondent aux questions des fichiers : 'NR==1' est la ligne d'en-tête, '{print NF}' compte les colonnes par ligne et la comparaison de NR avec les valeurs enregistrées d'un autre fichier trouve des doublons et des lacunes.
  • Match plus extract est le pain quotidien : awk '/ 500 / {print $7, $9}' access.log extrait les pages d'erreur avec les URL, et OFS vous permet de réimprimer 0 $ après avoir modifié un seul champ sans réécrire la ligne vous-même.
  • Les blocs BEGIN et END sont l'endroit où se déroule le travail global : BEGIN définit les séparateurs, les règles du milieu s'exécutent par ligne, END imprime les totaux ; trois blocs se lisent bien, cinq est un script déguisé.
  • Les citations sont le véritable ennemi des one-liners shell : mettez le programme entre guillemets simples, doublez les littéraux à l'intérieur, et rappelez-vous que 7 $ à l'intérieur d'une chaîne shell entre guillemets doubles n'atteint jamais du tout awk.
  • Le travail numérique obtient LC_ALL=C : les virgules locales dans les nombres et les classements impairs font tourner les comparaisons et les tris latéralement, et épingler les paramètres régionaux est une ligne qui permet de gagner un après-midi.
  • Connaître le plafond : les virgules entre guillemets dans les formats CSV, JSON imbriqué ou multiligne avec état vont à Python ; awk est un scalpel et le reste.

Note de terrain

Un one-liner maladroit qui additionnait les colonnes en dollars d'un journal avec des virgules locales produisait des chiffres que personne ne remettait en question jusqu'à ce que la comptabilité ouvre le rapport. LC_ALL=C a emménagé dans notre bibliothèque d'alias cette semaine-là et y est resté.

Questions fréquentes

mal ou coupé pour le travail en colonnes ?

coupé pour un séparateur fixe et une liste de colonnes simple ; gênant au moment où les conditions, les expressions rationnelles, l'arithmétique ou les agrégats apparaissent, auquel cas la coupe est de toute façon hors de sa profondeur.

Comment additionner ou faire la moyenne d'une colonne ?

Agréger dans END : awk '{s += $5} END {print s, s/NR}' ajoute et fait la moyenne du champ cinq sur les lignes ; supprimez d'abord les séparateurs de milliers si les paramètres régionaux mettent des virgules dans les nombres.

Pourquoi mon awk one-liner se comporte-t-il différemment sur macOS ?

macOS fournit un awk POSIX sans extensions GNU comme -i inplace ou gensub ; les scripts qui s'exécutent sous Linux peuvent échouer tranquillement là-bas, alors gardez les one-liners en forme de POSIX ou emportez gawk avec vous.

Awk peut-il analyser JSON ?

Pas de manière significative : JSON n'a pas de structure de colonnes que Awk comprend et les hacks d'expression régulière s'interrompent sur les objets imbriqués. Utilisez jq, qui est la forme d'awk pour JSON, ou le module json de Python lorsque le travail se développe.

Comment Kinetikatech vous aide avec commandes linux et compétences shell

Nous l'avons résolu des centaines de fois : Les commandes et habitudes de script qui décident si un administrateur exploite un serveur ou le combat : rechercher, transformer, transférer et superviser le texte et les processus avec les outils présents dans chaque installation de base. Avec Sécurité des serveurs Linux et Gestion de serveurs, vous bénéficiez du cycle complet : nous évaluons, nous déployons, nous surveillons jour et nuit et nous répondons en 30 minutes quand cela compte.

Parler à un ingénieur

Problème de serveur ? Site piraté ? Site lent ?

Incidents critiques pris en charge en 30 minutes — 24h/24, 7j/7.

Demander une assistance urgente support@kinetikatech.com