Startpagina > Tekstverwerking en zoeken > printf

printf: Geformatteerde uitvoer

`printf` is een commando dat, vergelijkbaar met de `printf`-functie in C, gegevens uitvoert naar de standaarduitvoer volgens een opgegeven formatteerstring. U kunt variabelen of letterlijke waarden formatteren en uitvoeren in verschillende formaten (geheel getal, drijvende komma, tekenreeks, enz.) en speciale tekens invoegen met behulp van escape-sequenties. Het biedt meer gedetailleerde controle over de uitvoer dan het `echo`-commando.

Overzicht

`printf` regelt de uitvoer nauwkeurig met behulp van een formatteerstring en argumenten. Het wordt gebruikt voor verschillende doeleinden in scripts, zoals het genereren van rapporten en het formatteren van logberichten.

Belangrijkste kenmerken

  • Ondersteuning voor diverse format-specifiers (%s, %d, %f, etc.)
  • Ondersteuning voor escape-sequenties (\n, \t, \x, etc.)
  • Uitvoer per gegevenstype, zoals gehele getallen, drijvende-kommagetallen, tekenreeksen
  • Mogelijkheid om uitvoerbreedte, precisie en uitlijning te regelen

Belangrijkste opties (Format-specifiers en escape-sequenties)

Het `printf`-commando regelt de werking niet via traditionele opties die beginnen met `-`, maar via 'format-specifiers' en 'escape-sequenties' die zijn opgenomen in de formatteerstring. Hier zijn enkele veelgebruikte:

Format-specifiers

Escape-sequenties

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`printf` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

Voorbeelden van het gebruik van `printf` met verschillende format-specifiers en escape-sequenties.

Basis tekenreeks uitvoer

printf "Hello, World!\n"

Voert een eenvoudige tekenreeks uit en voegt een nieuwe regel toe.

Gemengde uitvoer van gehele getallen en tekenreeksen

printf "Naam: %s, Leeftijd: %d jaar\n" "Hong Gildong" 30

Formatteert en voert gehele getallen en tekenreeksen samen uit.

Precisie van drijvende-kommagetallen specificeren

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

Voert een drijvend-kommagetal uit met twee decimalen.

Uitvoerbreedte en uitlijning

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

Lijnt een tekenreeks links uit in een breedte van 10 tekens en een geheel getal rechts in een breedte van 5 tekens.

Hexadecimale en octale uitvoer

printf "Decimaal: %d, Hex: %x, Octaal: %o\n" 255 255 255

Voert getallen uit in hexadecimaal en octaal formaat.

Gebruik met variabelen

NAME="Kim Cheolsu"
SCORE=95
printf "Student: %s, Score: %d punten\n" "$NAME" "$SCORE"

Gebruikt shell-variabelen als argumenten voor `printf` om uit te voeren.

Tips & Aandachtspunten

Tips en aandachtspunten voor effectief gebruik van `printf`.

Verschil met `echo`

`echo` wordt voornamelijk gebruikt voor eenvoudige tekenreeksuitvoer en is beperkt in het interpreteren van escape-sequenties (vereist de `-e` optie) of formattering. `printf` daarentegen kan de uitvoerformaat nauwkeurig regelen via format-specifiers en interpreteert altijd escape-sequenties.

  • Escape-sequenties: `printf` interpreteert altijd escape-sequenties. `echo` vereist de `-e` optie.
  • Formattering: `printf` ondersteunt diverse format-specifiers zoals `%s`, `%d`, enz. om de uitvoerformaat nauwkeurig te regelen. `echo` heeft deze functionaliteit niet.
  • Nieuwe regel: `echo` voegt standaard een nieuwe regel toe na de uitvoer, maar `printf` vereist dat `\n` expliciet wordt gespecificeerd.

Overeenkomst tussen formatteerstring en argumenten

Het aantal format-specifiers in de formatteerstring moet overeenkomen met het aantal opgegeven argumenten. Als er argumenten ontbreken, kunnen standaardwaarden (bijv. 0 of een lege tekenreeks) worden gebruikt, afhankelijk van de shell. Als er te veel argumenten zijn, worden de overtollige argumenten genegeerd. Dit kan leiden tot onverwachte resultaten, dus wees voorzichtig.

Voorzichtigheid bij het gebruik van escape-sequenties

Vooral bij het uitvoeren van het `\`-teken moet u dit tweemaal gebruiken, zoals `\\`. De shell kan de backslash eerst interpreteren, dus het kan nodig zijn om deze te escapen voordat deze aan `printf` wordt doorgegeven. Over het algemeen is het veilig om de formatteerstring tussen dubbele aanhalingstekens (`"`) te plaatsen.


Hétzelfde categoriecommando