accueil > Traitement et recherche de texte > printf

printf : sortie formatée

`printf` est une commande qui, similaire à la fonction `printf` du langage C, affiche des données sur la sortie standard selon une chaîne de format spécifiée. Elle permet de formater des variables ou des valeurs littérales dans divers formats (entiers, flottants, chaînes, etc.) et d'insérer des caractères spéciaux à l'aide de séquences d'échappement. Elle offre un contrôle de sortie plus précis que la commande `echo`.

Aperçu

`printf` contrôle précisément la sortie en utilisant une chaîne de format et des arguments. Elle est utilisée dans les scripts pour diverses tâches telles que la génération de rapports et le formatage des messages de journal.

Caractéristiques principales

  • Prise en charge de divers spécificateurs de format (%s, %d, %f, etc.)
  • Prise en charge des séquences d'échappement (\n, \t, \x, etc.)
  • Sortie par type de données : entiers, flottants, chaînes, etc.
  • Contrôle de la largeur, de la précision et de l'alignement de la sortie

Options principales (Spécificateurs de format et séquences d'échappement)

La commande `printf` contrôle son comportement non pas par des options commençant par `-`, mais par des 'spécificateurs de format' et des 'séquences d'échappement' inclus dans la chaîne de format. Voici les plus couramment utilisés.

Spécificateurs de format

Séquences d'échappement

Commande générée :

Essayez de combiner les commandes.

Description:

`printf` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples d'utilisation

Exemples d'utilisation de `printf` avec divers spécificateurs de format et séquences d'échappement.

Affichage de chaîne simple

printf "Hello, World!\n"

Affiche une chaîne simple et passe à la ligne.

Affichage mixte d'entiers et de chaînes

printf "Nom : %s, Âge : %d ans\n" "Jean Dupont" 30

Affiche un entier et une chaîne formatés ensemble.

Spécification de la précision des nombres à virgule flottante

printf "Pi : %.2f\n" 3.141592

Affiche un nombre à virgule flottante avec deux décimales.

Largeur et alignement de la sortie

printf "%-10s %5d\n" "Produit" 123

Aligne une chaîne à gauche sur 10 caractères et un entier à droite sur 5 caractères.

Affichage hexadécimal et octal

printf "Décimal : %d, Hexadécimal : %x, Octal : %o\n" 255 255 255

Affiche un nombre en hexadécimal et en octal.

Utilisation avec des variables

NOM="Pierre Martin"
SCORE=95
printf "Étudiant : %s, Score : %d points\n" "$NOM" "$SCORE"

Utilise des variables shell comme arguments pour `printf`.

Conseils et précautions

Conseils et points à considérer pour utiliser `printf` efficacement.

Différences avec `echo`

`echo` est principalement utilisé pour l'affichage de chaînes simples et est limité dans l'interprétation des séquences d'échappement (nécessite l'option `-e`) ou le formatage. En revanche, `printf` permet un contrôle précis du format de sortie via les spécificateurs de format et interprète toujours les séquences d'échappement.

  • Séquences d'échappement: `printf` interprète toujours les séquences d'échappement. `echo` nécessite l'option `-e`.
  • Formatage: `printf` prend en charge divers spécificateurs de format comme `%s`, `%d`, etc., permettant un contrôle fin du format de sortie. `echo` ne dispose pas de cette fonctionnalité.
  • Saut de ligne: `echo` effectue un saut de ligne après l'affichage par défaut, tandis que `printf` nécessite de spécifier explicitement `\n`.

Correspondance entre la chaîne de format et les arguments

Le nombre de spécificateurs de format dans la chaîne de format doit correspondre au nombre d'arguments fournis. Si les arguments sont insuffisants, des valeurs par défaut (par exemple, 0 ou une chaîne vide) peuvent être utilisées selon le shell, et si les arguments sont trop nombreux, les arguments excédentaires seront ignorés. Cela peut entraîner des résultats inattendus, il faut donc être prudent.

Précautions lors de l'utilisation des séquences d'échappement

En particulier, pour afficher un caractère antislash (`\`), vous devez l'utiliser deux fois, comme `\\`. Le shell peut interpréter l'antislash en premier, il peut donc être nécessaire de l'échapper avant de le transmettre à `printf`. En général, il est plus sûr d'encadrer la chaîne de format avec des guillemets doubles (").


Commandes de la même catégorie