La fonction printf

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
$

Etiquettes: