awk propose la fonction intégrée printf similaire à celle du langage C. Elle permet de formater les affichages.
printf ("chaine",field1,field2,field3...fieldx)
chaine représente la chaine affichée à l'écran. Elle peut contenir des formats qui seront substitués par la valeur des expressions citées à la suite. Il doit y avoir autant de formats que d'expressions.
Formats souvent utilisés
Format | Signification |
---|---|
%20s | Affichage d'une chaine (string) sur 20 caractères (cadrage à droite par défaut) |
%-20s | Affichage d'une chaine (string) sur 20 caractères avec cadrage à gauche |
%3d | Affichage d'un entier/décimal sur 3 chiffres (cadrage à droite) |
%03d | Affichage d'un entier/décimal sur 3 chiffres (cadrage à droite) complété par des 0 à gauche |
%-3d | Affichage d'un entier/décimal sur 3 chiffres (cadrage à gauche) |
%+3d | Affichage d'un entier/décimal sur 3 chiffres (cadrage à droite) avec affichage systématique du signe (un nombre négatif est toujours affiché avec son signe) |
%10.2f | Affichage d'un nombre flottant sur 10 chiffres dont 2 décimales. (cadrage à droite) |
%+010.2f | Affichage d'un nombre flottant sur 10 chiffres dont 2 décimales, cadrage à droite, affichage systématique du signe, complétion par des 0 à gauche. |
Exemple :
$ date | awk '{printf "%10s\n%-10s\n%d\n%15d\n%015d\n%-10d\n%+10d\n%10.2f\n%+010.2f\n" , $1 , $1 , $4 , $4 , $4 , $4 , $4 , 5.2 , 5.2}'
mer. # %10s
mer. # %-10s
2012 # %d
2012 # %15d
000000000002012 # %015d
2012 # %-10d
+2012 # %+10d
5.20 # %10.2f
+000005.20 # %+010.2f
$