printf(1) printf(1)
NAME
printf - Formatierte Ausgabe
SYNTAX
printf 'format' [arg ...]
BESCHREIBUNG
printf gibt die von Ihnen angegebenen Argumente in formatierter Form
aus. printf unterstützt fast alle Formatangaben für Zeichenketten wie
bei der C-Funktion printf(3S).
OPERANDEN
'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 ent-
sprechende Zeichen umgewandelt werden, z. B. wird \n in ein
Neue-Zeile-Zeichen umgewandelt.
- Formatelemente, von denen jedes eines der angegebenen Argu-
mente arg bearbeitet.
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
\oktal
Oktalzahl, wobei oktal aus einer, zwei oder drei Ziffern
besteht
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
printf(1) printf(1)
Formatelemente
Ein Formatelement besteht aus:
%[argnr$][feldbreite][.genauigkeit]konvertierungszeichen
% steht immer am Anfang des Formatelements. Soll das %-Zeichen
nicht Bestandteil des Formatelements sein, sondern ein aus-
zugebendes Zeichen, muß es durch ein zusätzliches %-Zeichen
entwertet werden (%%).
argnr$
dezimale Ganzzahl, mit der Sie die Position des Arguments
angeben, das bearbeitet werden soll. Der Zahl muß ein $-
Zeichen folgen.
argnr nicht angegeben: Das Argument, das auf das zuletzt
umgewandelte Argument folgt, wird bearbeitet.
Hinweis:
Wenn Sie für ein Argument argnr$ verwenden, sollten
Sie argnr$ auch für alle anderen Argumente verwenden.
feldbreite
dezimale Ganzzahl, mit der Sie die minimale Feldbreite fest-
legen. Wenn die umzuwandelnde Zeichenkette oder Zahl aus
weniger Zeichen/Ziffern besteht als durch feldbreite
bestimmt, wird sie rechtsbündig ausgegeben. Wollen Sie eine
linksbündige Ausgabe, so müssen Sie vor der dezimalen Ganz-
zahl ein Minuszeichen - 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 muß vor der umzu-
wandelnden Zeichenkette oder Zahl stehen. Die Angabe eines
Sterns * funktioniert jedoch nur dann, wenn argnr$ nicht
verwendet wird.
Ist die Zeichenkette oder Zahl länger als die Feldbreite,
wird das Feld automatisch erweitert.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
printf(1) printf(1)
.genauigkeit
dezimale Ganzzahl, mit der Sie angeben, wieviele Zeichen der
umzuwandelnden Zeichenkette oder Zahl maximal ausgegeben
werden sollen. Vor dieser Zahl muß 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 muß vor der umzu-
wandelnden Zeichenkette oder Zahl stehen. Die Angabe eines
Sterns * funktioniert jedoch nur dann, wenn argnr$ nicht
verwendet wird.
konvertierungszeichen
Folgende konvertierungszeichen können Sie bei printf verwen-
den:
____________________________________________________________
| Konvertierungs-| |
| zeichen | Bedeutung |
|________________|__________________________________________|
| b | Zeichenkette mit Sonderzeichen |
|________________|__________________________________________|
| c | Einzelnes Zeichen |
|________________|__________________________________________|
| d, i | Ganzzahl dezimal mit Vorzeichen |
|________________|__________________________________________|
| e, E | Gleitkommazahl in Exponent-Darstellung, |
| | z. B. 5.234e+2 |
|________________|__________________________________________|
| f | Gleitkommazahl, z. B. 52.34 |
|________________|__________________________________________|
| g, G | %e oder %f, je nachdem, welche Darstel- |
| | lung kürzer ist |
|________________|__________________________________________|
| o | Ganzzahl oktal (Basis 8) ohne Vorzeichen|
|________________|__________________________________________|
| s | Zeichenkette |
|________________|__________________________________________|
| u | Ganzzahl dezimal ohne Vorzeichen |
|________________|__________________________________________|
| x, X, p | Ganzzahl hexadezimal (Basis 16) ohne |
| | Vorzeichen |
|________________|__________________________________________|
Bei s werden alle Zeichen der Zeichenkette ausgegeben bis
die bei genauigkeit angegebene Zeichenzahl erreicht wird.
Ist genauigkeit nicht angegeben, wird die gesamte Zeichen-
kette ausgegeben.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
printf(1) printf(1)
Bei b kann die Zeichenkette in arg Sonderzeichen enthalten.
printf unterstützt hier alle vom Kommando echo interpretier-
ten Escape-Sequenzen, d. h. die oben angegebenen Escape-
Sequenzen mit der Ausnahme, daß Oktalzahlen als \0oktal
angegeben werden, und zusätzlich \c. \c bewirkt, daß printf
die Ausgabe an dieser Stelle abbricht und nicht mit einem
Neue-Zeile-Zeichen abschließt.
arg Zeichenfolge, die im durch format bestimmten Format auf der Stan-
dardausgabe 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 argnr$; in diesem Fall werden die überzähligen Argumente
ignoriert).
arg nicht angegeben:
Das Ergebnis ist nicht definiert.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
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 %3$s %1$s\n' Heike Guten Morgen
Beispiel 2
Sie wollen die ersten 6 Zeichen Ihres HOME-Verzeichnisses /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.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
printf(1) printf(1)
Beispiel 3
Sie wollen eine 4stellige Zahl in ein 8stelliges Feld rechtsbündig,
rechtsbündig mit führenden Nullen und anschließend linksbündig ausge-
ben.
$ printf '%8s\n' 1860
1860
$ printf '%08s\n' 1860
00001860
$ printf '%-8s\n' 1860
1860<blank><blank><blank><blank>
Beispiel 4
Ausgabe eine Festkommazahl mit Begrenzung auf zwei Nachkommastellen.
$ printf '%.2f\n' 1000,3333333
1000,33
Achtung: Bei englischer LANG-Variable muß statt des Dezimalkommas ein
Dezimalpunkt eingegeben werden.
SIEHE AUCH
awk(1), bc(1), echo(1), printf(3S).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98