awk bien determinier
UNIX
La programmation
AWK
AbdelAli.Ed-Dbali@lifo.univ-orleans.fr
© A. ED-DBALI
awk - principe de fonctionnement
Forme générale d’un programme awk :
Fichier en entrée
Programme awk
BEGIN {action début}
Ligne1
…
sélection1 {action1}
…
sélectionn {actionn}
Lignem
END {action fin}
Ligne2
Exécutée avant le début de lecture du fichier (sélection = BEGIN)
Pour chaque lignei (i=1 à m) faire : pour j=1 à n faire : si sélectionj est vérifiée, exécuter actionj
Exécutée à la fin de lecture du fichier (sélection = END)
Remarque : si sélectionj absente, exécuter actionj pour toutes les lignes
UNIX : La programmation AWK
2
© A. ED-DBALI
ED-
awk - principe de fonctionnement awk sépare les lignes en champs selon le séparateur
FS (Field Separator : par défaut espace)
Ligne1
champ champ … champ
Lignei
champ champ … champ
toute la ligne
$1
NR=i
Lignen
$0
$2
$NF
champ champ … champ
NF : Nombre de champs d'une ligne
NR : Numéro de la ligne en court
UNIX : La programmation AWK
3
© A. ED-DBALI
ED-
Quelques exemples
$ awk 'length > 72' fich
• Affiche les lignes de fich de longueur > à 72
$ awk '/debut/,/fin/' fich
• Affiche les lignes de fich entre debut et fin
$ awk '{ print $2, $1 }' fich
• Affiche les champs 2 et 1 (dans cet ordre) de toutes les lignes de fich
$ awk -F: '$7 ~ /ksh/ {print $1}' /etc/passwd
• Affiche les noms de login (1er champ) des utilisateurs utilisant ksh comme shell (7ème champ) de connexion
$ ps -ef | awk '/nom/ {print $2}'
• Affiche les numéros des processus contenant la chaîne nom
UNIX : La programmation AWK
4
© A. ED-DBALI
ED-
Ligne de commande awk awk [-F ifs] [-f prog_file]... [-v var=val]... [argument]... awk [-F ifs] [-v var=val]... ['prog_text'] [argument]...
• -F ifs : Définit ifs comme le séparateur de champs en entrée (ifs : input field separator). ifs peut être une expression régulière (par