Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

printf - Formatierte Ausgabe

&pagelevel(4)&pagelevel

(formatted output)


printf gibt die von Ihnen angegebenen Argumente in formatierter Form aus. printf unterstützt alle Formatangaben für Zeichenketten wie bei der C-Funktion printf().


Syntax


printf format[ arg]...

format

Zeichenfolge, die drei verschiedene Objekttypen enthalten kann:

  • Zeichen, die unverändert ausgegeben werden sollen.

  • Escape-Folgen für Sonderzeichen, die in der Ausgabe in entsprechende Zeichen umgewandelt werden, z. B. wird \n in ein Neue-Zeile-Zeichen umgewandelt.

  • Formatelemente, von denen jedes eines der angegebenen Argumente arg bearbeitet.

arg

Zeichenfolge, die im durch format bestimmten Format auf der Standard-Ausgabe ausgegeben wird. Sind weniger Argumente vorhanden als format verlangt, wird für die fehlenden Argumente 0 oder die leere Zeichenkette eingesetzt. Sind mehr Argumente vorhanden als format verlangt, wird format mehrfach verwendet (außer bei Angabe von ar g_nr$; in diesem Fall werden die überzähligen Argumente ignoriert).

arg nicht angegeben:
Das Ergebnis ist nicht definiert.

Sonderzeichen

Folgende Sonderzeichen werden von printf interpretiert:

\\ Backslash (zur Unterscheidung von Oktalzahlen)
\a Warnung, Klingel *)
\b Backspace, Rücksetzzeichen *)
\f Form Feed, Seitenvorschub
\n Newline, Neue-Zeile-Zeichen
\r Carriage Return, Wagenrücklauf
\t Tabulator
\v Vertikal-Tabulator *)
\ oktalOktalzahl, wobei oktal aus einer, zwei oder drei Ziffern besteht

*)   Die so markierten Sonderzeichen werden nur auf Zeichenterminals unterstützt (also bei Zugang zur POSIX-Shell über rlogin)


Formatelemente

Ein Formatelement besteht aus:

%[arg_nr$][feldbreite][.genauigkeit]konvertierungszeichen


%

steht immer am Anfang des Formatelements. Soll das %-Zeichen nicht Bestandteil des Formatelements sein, sondern ein auszugebendes Zeichen, muss es durch ein zusätzliches %-Zeichen entwertet werden (%%).


arg_nr$

dezimale Ganzzahl, mit der Sie die Position des Arguments angeben, das bearbeitet werden soll. Der Zahl muss ein $-Zeichen folgen.

%arg_nr$ und % sollten nicht vermischt verwendet werden.

arg_nr nicht angegeben:
Das Argument, das auf das zuletzt umgewandelte Argument folgt, wird bearbeitet.


Wenn Sie für ein Argument arg_nr$ verwenden, sollten Sie arg_nr$ auch für alle anderen Argumente verwenden.


feldbreite

dezimale Ganzzahl, mit der Sie die minimale Feldbreite festlegen. Wenn die umzuwandelnde Zeichenkette aus weniger Zeichen besteht als durch feldbreite bestimmt, wird sie rechtsbündig ausgegeben. Wollen Sie eine linksbündige Ausgabe, so müssen Sie vor der dezimalen Ganzzahl einen Bindestrich - angeben. Beginnt feldbreite mit einer Null, so wird das Feld bei rechtsbündiger Ausgabe statt mit Leerzeichen mit Nullen aufgefüllt. Statt einer Zahl können Sie bei feldbreite auch einen Stern * einsetzen. In diesem Fall bestimmt dann ein ganzzahliges Argument die Feldbreite. Dieses Argument muss vor der umzuwandelnden Zeichenkette stehen. Die Angabe eines Sterns * funktioniert jedoch nur dann, wenn arg_nr$ nicht verwendet wird.
Ist die Zeichenkette länger als die Feldbreite, wird das Feld automatisch erweitert.

.genauigkeit

dezimale Ganzzahl, mit der Sie angeben, wieviele Zeichen der umzuwandelnden Zeichenkette maximal ausgegeben werden sollen. Vor dieser Zahl muss ein Punkt stehen. Ist die Zahl Null, wird nichts ausgegeben. Negative Zahlen werden wie positive Zahlen behandelt. Die Ausgabe richtet sich immer nach dieser Zahl, auch wenn Sie für feldbreite eine andere Zahl eingegeben haben.
Statt einer Zahl können Sie bei genauigkeit auch einen Stern * einsetzen. In diesem Fall bestimmt dann ein ganzzahliges Argument die Genauigkeit. Dieses Argument muss vor der umzuwandelnden Zeichenkette stehen. Die Angabe eines Sterns * funktioniert jedoch nur dann, wenn arg_nr$ nicht verwendet wird.

konvertierungszeichen

Folgende konvertierungszeichen können Sie bei printf verwenden:


b Zeichenkette mit Sonderzeichen
c Einzelnes Zeichen
d Ganzzahl dezimal
e Gleitkommazahl in Exponent-Darstellung, z.B. 5.234e+2
E Gleitkommazahl in Exponent-Darstellung, z.B. 5.234E+2
f Gleitkommazahl, z.B. 52.34
g %e oder %f, je nachdem, welche Darstellung kürzer ist
G %E oder %f, je nachdem, welche Darstellung kürzer ist
o Ganzzahl oktal (Basis 8)
s Zeichenkette
u Ganzzahl dezimal ohne Vorzeichen
x Ganzzahl hexadezimal (Basis 16)


Bei s werden alle Zeichen der Zeichenkette ausgegeben, bis die bei genauigkeit angegebene Zeichenzahl erreicht wird. Ist genauigkeit nicht angegeben, wird die gesamte Zeichenkette ausgegeben.

Bei b kann die Zeichenkette in arg Sonderzeichen enthalten. printf unterstützt hier alle vom Kommando echo interpretierten Escape-Sequenzen, d.h. die oben angegebenen Escape-Sequenzen mit der Ausnahme, dass Oktalzahlen als \0oktal angegeben werden, und zusätzlich \c. \c bewirkt, dass printf die Ausgabe an dieser Stelle abbricht und nicht mit einem Neue-Zeile-Zeichen abschließt.

Den Konvertierungszeichen d, u, o, x und X kann die Angabe ll vorangestellt werden. Dann wird das Argument nicht als [un]signed long int sondern als [un]signed long long int interpretiert. 

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos printf:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

LC_NUMERIC

Legt die internationale Umgebung für die numerische Ausgabe fest. Diese Variable beeinflusst das Format der Zahlen, die bei den Konvertierungszeichen e, E, f, g und G verwendet werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel 1

Sie wollen auf dem Bildschirm „Guten Morgen Heike“ ausgeben.

$ printf '%s %s %s\n' Guten Morgen Heike

Folgendes Kommando erzielt die gleiche Wirkung:

$ printf '%2$s %3s %1$s\n' Heike Guten Morgen

Beispiel 2

Sie wollen die ersten 6 Zeichen Ihres HOME-Dateiverzeichnisses /usr/huber mit einer entsprechenden Meldung ausgeben.

$ printf 'Die ersten 6 Zeichen von %s sind %.6s.\n' $HOME $HOME

Die ersten 6 Zeichen von /usr/huber sind /usr/h.

Beispiel 3

Sie wollen eine 4stellige Zahl in ein 8stelliges Feld rechtsbündig, rechtsbündig mit führenden Nullen und anschließend linksbündig ausgeben.

$ printf '%8s\n' 1860
    1860
$ printf '%08s\n' 1860
00001860
$ printf '%-8s\n' 1860
1860

Siehe auch

awk, bc, echo

printf() [4]