Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

awk(1)

bc(1)

echo(1)

printf(3S)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026