printf în Linux / Bash

Scripting Bash POSIX / Bash built-in

Formatează și afișează date conform unui șablon precis, similar cu funcția printf din C.

Sintaxă comandă
printf format [argumente...]

Ce face printf

Spre deosebire de echo (care are comportamente ușor diferite între diverse shell-uri și sisteme UNIX), printf este complet standardizat și predictibil.

Permite alinierea textului pe coloane fixe, specificarea numărului de zecimale pentru numere și formatarea tabelelor direct în consolă. Spre deosebire de echo, nu adaugă linie nouă automată decât dacă specifici explicit \n.

Opțiuni și argumente

Opțiune / Parametru Descriere
%s Specificator pentru șir de caractere (text).
%d, %i Specificator pentru număr întreg cu semn.
%.2f Specificator pentru număr real cu virgulă, rotunjit la două zecimale.
%-15s Aliniază textul la stânga într-un spațiu rezervat de exact 15 caractere.

Exemple

Exemplul 1: Formatarea unui tabel aliniat pe coloane

Construim un tabel curat fără spații manuale imprecise.

printf "%-10s %-8s %s\n" "Produs" "Pret" "Moneda"
printf "%-10s %-8.2f %s\n" "Paine" 4.50 "RON"
printf "%-10s %-8.2f %s\n" "Lapte" 8.25 "RON"

Rezultat

Produs     Pret     Moneda
Paine      4.50     RON
Lapte      8.25     RON

Greșeli frecvente

  • Omiterea caracterului \n de la sfârșitul șirului de format, ceea ce determină afișarea următorului text pe același rând.

Comenzi înrudite

  • echo: Afișează o linie de text sau valorile variabilelor în consolă sau ieșirea standard.
  • awk: Limbaj de procesare a textului structurat pe coloane, ideal pentru rapoarte și extragere de date.