Sections
awk
AWK : Aho, Kernighan and Weinberger
Call
awk -f file.awk
echo -e "a\nb\nc" | awk '{print}' // affiche a, b et c
Section
Le script est séparé en trois blocs:
- [optionnel] BEGIN {}
- Bloc début. Appelé une seule fois au début du script
- [optionnel] {}
- Bloc répétition (record). Appelé sur chaque record (généralement chaque ligne) d'entrée (STDIN)
- [optionnel] END {}
- Bloc fin. Appelé une seule fois à la fin du script.
Les blocs peuvent être déclaré en désordre et sera exécuté en ordre. On préfère généralement utiliser l'ordre suivant: BEGIN {} { } END { }
File
Extension: .awk
Shebang: #!/usr/bin/awk -f
chmod +x file.awk (pour pouvoir l'exécuter avec ./file.awk)
Commentaire: dièse '#'
Séparateur d'instruction: point-virgule ';'
Variable
RS : séparateur d'enregistrements (Record Separator), par défaut "\n"
FS : séparateur de champs (Field Separator), par défaut " "
NR : Numéro de l'enregistrement (Record) en cours (0 dans le bloc BEGIN, 1..n dans le bloc répétition.
NF : Nombre total de champs (Field) pour chaque enregistrement (Record) dans le bloc répétition.
I/O
Variable dans le bloc répétition (pour chaque Record),
- $0 : le record entier (sans le séparateur RS)
- $1...$NF : chaque champ séparé par le séparateur FS (sans le séparateur FS)
- $NF : dernier champ séparé par le séparateur FS
Command Output
print : affiche par défaut $0, sinon affiche tous les arguments.
{ print; // affiche $0, l'enregistrement en cours print $1; // affiche $1, le premier champ (field) de l'enregistrement en cours print NF; // affiche la variable NF print $1 ":" $2; // affiche le premier champ, suivi de deux-points, suivi du deuxième champ. }
Tableau
La clé est une chaîne de caractères. La clé numérique 1 représente la chaîne "1". a[1] est le même que a["1"]
La valeur peut être un nombre ou une chaîne de caractères.
nomtableau["cle"] = "valeur1" nomtableau["cle2"] = "valeur1" nomtableau["cle3"] = 3 nomtableau[10] = 2
Accès par nomtableau["cle"] ou nomtableau[VARIABLE]
Test d'existante d'une clé: "cle" in nomtableau (retourne 0 ou 1)
Suppression d'une clé: delete nomtableau["cle"]
Boucle: for (var in nomtableau) print var;
Tableau à plusieurs dimensions: simulé avec SUBSEP.
Exemple d'un programme awk
#!/usr/bin/awk -f # USAGE # # echo "Samedi 20 octobre 2012" | ./test.awk # # BEGIN { month["octobre"] = 10 month["novembre"] = 11 month["décembre"] = 12 } { # affiche 20/10/2012 print $2 "/" month[$3] "/" $4; }
Dernière modification: 2013-10-13 10:53:50 par Yan Morin
Hébergé par ProgYSM