Linux:AWK
Un article de Djjnet.
Appels à awk
Pour lancer awk il suffit de faire appel à la commande suivie du programme :
awk programme
Une autre façon est de mettre le programme dans un fichier :
awk -f fichier
Syntaxe
Awk fonctionne par modèle et action associée. A chaque ligne, awk compare le modèle et si celui-ci correspond, l'action est exécutée. On retrouve ainsi la syntaxe :
modèle{action}
modèle et action sont indépendamment optionnels. Sans action, la ligne correspondant au modèle est affichée. Sans modèle, l'action est exécutée pour chaque ligne.
Chaque ligne est divisée en champs qui sont référencés par $1, $2, etc ... $0 représente la ligne entière.
Des variables prédéfinies :
- NR : numéro de la ligne en cours
- NF : nombre de ligne
- FS : représente le délimiteur entre chaque champs (espace et tabulation par défaut), FS peut être modifié avec l'option -F
- RS : représente le délimiteur de fin de ligne
- FILENAME : nom du fichier en entrée
- BEGIN et END sont des modèles prédéfinis qui permettent d'effectuer respectivement des actions avant ou après le traitement.
Quelques exemple d'utilisation d'awk
df | awk '{print $4 " " $6}' | sort -n
$0 correspond à la ligne complète blocs : {commande1; commmande2} le délimiteur par défaut est l'espace, pour le changer : awk 'BEGIN{FS=","}{print $4 " " $6}' BEGIN et END permettent d'effectuer une action avant la première ligne et après la dernière ligne.
awk 'BEGIN{print "Nom" " " "Prenom"} {print $1 " " $3}' : affiche Nom et Prenom en entete des colonnes
ajout de condition :
df | awk '(!(/Used/)){print $4 " " $6}' | sort -n : ne traite pas la ligne contenant la chaine Used
ls -l |awk '/^d/ {print $9}' : affiche le nom des répertoires car il y a une recherche des lignes commançant par d


