printf(1p): Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= Sidslut = Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/printf.1p.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/ <BR><BR>Tack till [https://Pc-service.se PC Service] som har sponsrat [https://www.linux.se Linux.se] med webbhotell. Kategori:Linuxmanual grupp 1 Kategori:Linuxmanual')
 
 
(En mellanliggande sidversion av samma användare visas inte)
Rad 1: Rad 1:
== NAMN ==
'''printf''' — skriv formaterad utdata
== SYNOPSIS ==
<pre>
printf format [argument...]
</pre>
== BESKRIVNING ==
Verktyget ''printf'' skriver formaterade argument till standard ut.
Operanderna ''argument'' formateras enligt styrningen från operanden
''format''.
== ALTERNATIV ==
Inga.
== OPERANDER ==
; ''format''
: En sträng som beskriver vilket format som ska användas för att skriva
  återstående operander.
; ''argument''
: Strängar som ska skrivas till standard ut, styrda av ''format''.
== STDIN ==
Används inte.
== INDATAFILER ==
Inga.
== MILJÖVARIABLER ==
Följande miljövariabler påverkar körningen av ''printf'':
; ''LANG''
: Ger standardvärde för internationaliseringsvariabler som är tomma
  eller ej satta.
; ''LC_ALL''
: Åsidosätter alla andra internationaliseringsvariabler om den är satt
  till en icke-tom sträng.
; ''LC_CTYPE''
: Bestämmer hur byteföljder ska tolkas som tecken.
; ''LC_MESSAGES''
: Bestämmer språk och format för felmeddelanden till standard error.
; ''LC_NUMERIC''
: Bestämmer numerisk formatering. Påverkar utskrift med
  konverteringsspecifikationerna '''e''', '''E''', '''f''', '''g''' och '''G'''
  om de stöds.
; ''NLSPATH''
: Bestämmer var meddelandekataloger ska sökas.
== STDOUT ==
Se avsnittet om utökad beskrivning.
== STDERR ==
Standard error används endast för diagnostiska meddelanden.
== UTDATAFILER ==
Inga.
== UTÖKAD BESKRIVNING ==
Operanden ''format'' används som formatsträng ungefär enligt samma modell
som ''printf()'' i C, men med några POSIX-specifika regler och undantag.
=== Grundläggande regler ===
* Ett vanligt mellanslag i formatsträngen behandlas som ett vanligt
  tecken, utom när det används som flagga i en konverteringsspecifikation.
* Ett enkelt citationstecken behandlas som ett vanligt tecken.
* Förutom vanliga escape-sekvenser som <code>\\</code>, <code>\n</code>,
  <code>\t</code>, <code>\r</code> och liknande stöds även <code>\ddd</code>, där
  ''ddd'' är ett ett-, två- eller tresiffrigt oktaltal.
* Implementationen får inte lägga till extra blanktecken eller nollor
  utöver vad formatsträngen anger för vissa numeriska konverteringar.
* Konverteringarna '''a''', '''A''', '''e''', '''E''', '''f''', '''F''', '''g'''
  och '''G''' behöver inte stödjas.
=== Konverteringen %b ===
En extra konverteringsspecifikation, '''%b''', ska stödjas.
Argumentet behandlas då som en sträng som kan innehålla backslash-escapes.
Stödda escape-sekvenser i '''%b''':
* <code>\\</code>, <code>\a</code>, <code>\b</code>, <code>\f</code>,
  <code>\n</code>, <code>\r</code>, <code>\t</code>, <code>\v</code>
* <code>\0ddd</code>, där ''ddd'' är ett oktaltal med 0 till 3 siffror
* <code>\c</code>, som gör att inget mer skrivs ut: resten av den aktuella
  strängen, återstående strängargument och resten av formatsträngen
  ignoreras
Tolkningen av backslash följt av andra tecken är ospecificerad.
=== Återanvändning av formatsträngen ===
Formatoperanden återanvänds så många gånger som behövs för att konsumera
alla argument.
Om det finns fler konverteringar än argument:
* '''%b''', '''%c''' och '''%s''' behandlas som om tom sträng hade givits
* övriga konverteringar behandlas som om värdet noll hade givits
Om formatsträngen inte innehåller några konverteringsspecifikationer men
argument ändå finns, är resultatet ospecificerat.
=== %c ===
Argumentet till '''%c''' kan vara en sträng.
* Om strängen innehåller ett eller flera byte skrivs det första bytet ut
* eventuella ytterligare byte ignoreras
* om strängen är tom är det ospecificerat om ingenting skrivs eller om en
  nollbyte skrivs
=== Hur argument tolkas ===
Argument behandlas som strängar om motsvarande konvertering är:
* '''%b'''
* '''%c'''
* '''%s'''
Argument till flyttalskonverteringar (om de stöds) ska tolkas som om de
hade skickats till ''strtod()''.
Övriga argument tolkas som C-heltalskonstanter, med vissa tillägg:
* inledande '''+''' eller '''-''' är tillåtet
* om första tecknet är enkel- eller dubbelcitat används tecknets numeriska
  värde i den underliggande teckenkodningen
* suffigerade heltalskonstanter kan tillåtas
Om ett argument inte kan konverteras fullständigt till rätt intern typ
ska ett felmeddelande skrivas till standard error. Verktyget ska då inte
avslutas med exit-status 0, men det ska fortsätta bearbeta återstående
operander.
Det är inte ett fel om ett argument inte används helt för '''%b''',
'''%c''' eller '''%s'''.
== EXIT STATUS ==
; 0
: Lyckad körning.
; >0
: Ett fel inträffade.
== KONSEKVENSER AV FEL ==
Standardbeteende.
== ANVÄNDNING ==
''printf'' används ofta som ett portabelt och mer förutsägbart alternativ
till ''echo''.
POSIX kräver inte stöd för flyttalsformat som '''%f''' och '''%e''', eftersom
shellaritmetik normalt är heltalsbaserad. Många implementationer stöder
dem ändå som utökning.
För flerbytes-teckenkodningar bör man vara försiktig med:
* '''%c'''
* precision för '''%b''' eller '''%s'''
Ingen särskild mekanism finns i POSIX-varianten för att ange fältbredd
eller precision med '''*'''; detta kan normalt lösas med skalvariabler.
'''%b''' är inte en del av ISO C, utan finns här som ett portabelt sätt
att skriva strängar med escape-sekvenser.
== EXEMPEL ==
=== Enkel interaktiv prompt ===
<pre>
printf "\aPlease fill in the following: \nName: "
read name
printf "Phone number: "
read phone
</pre>
=== Beräkna procent med bc och skriv ut formaterat ===
<pre>
while read right wrong ; do
    percent=$(echo "scale=1;($right*100)/($right+$wrong)" | bc)
    printf "%2d right\t%2d wrong\t(%s%%)\n" \
        $right $wrong $percent
done < database_file
</pre>
=== Återanvändning av formatsträngen ===
<pre>
printf "%5d%4d\n" 1 21 321 4321 54321
</pre>
Detta ger:
<pre>
    1  21
  3214321
54321  0
</pre>
Formatet användes tre gånger, och ett implicit nollvärde användes för
den sista <code>%4d</code>-konverteringen.
=== Teckenvärden ===
<pre>
printf "%d\n" 3 +3 -3 \'3 \"+3 "'-3"
</pre>
I en teckenuppsättning kompatibel med ISO/IEC 646:1991 motsvarar detta
numeriska värden för talen och tecknen '''3''', '''+''' och '''-'''.
== MOTIVERING ==
''printf'' lades till för att erbjuda funktionalitet som historiskt ofta
hanterats av ''echo'', men på ett tydligare och mer portabelt sätt.
Specifikationen följer i stort ''printf()'' från ISO C, men med vissa
POSIX-anpassningar.
Tidigare versioner var mindre tydliga om hur argument skulle tolkas för
heltal respektive flyttal. Den nuvarande beskrivningen klargör detta.
== FRAMTIDA RIKTNING ==
Inga.
== SE ÄVEN ==
[[awk(1p)]], [[bc(1p)]], [[echo(1p)]], [[fprintf(3p)]], [[strtod(3p)]]
== COPYRIGHT ==
Delar av denna text bygger på IEEE Std 1003.1-2017 (POSIX).
Originalstandarden från IEEE och The Open Group är den auktoritativa
referensen.
= Sidslut =
= Sidslut =



Nuvarande version från 25 april 2026 kl. 11.24


NAMN

printf — skriv formaterad utdata

SYNOPSIS

printf format [argument...]

BESKRIVNING

Verktyget printf skriver formaterade argument till standard ut. Operanderna argument formateras enligt styrningen från operanden format.

ALTERNATIV

Inga.

OPERANDER

format
En sträng som beskriver vilket format som ska användas för att skriva
 återstående operander.
argument
Strängar som ska skrivas till standard ut, styrda av format.

STDIN

Används inte.

INDATAFILER

Inga.

MILJÖVARIABLER

Följande miljövariabler påverkar körningen av printf:

LANG
Ger standardvärde för internationaliseringsvariabler som är tomma
 eller ej satta.
LC_ALL
Åsidosätter alla andra internationaliseringsvariabler om den är satt
 till en icke-tom sträng.
LC_CTYPE
Bestämmer hur byteföljder ska tolkas som tecken.
LC_MESSAGES
Bestämmer språk och format för felmeddelanden till standard error.
LC_NUMERIC
Bestämmer numerisk formatering. Påverkar utskrift med
 konverteringsspecifikationerna e, E, f, g och G
 om de stöds.
NLSPATH
Bestämmer var meddelandekataloger ska sökas.

STDOUT

Se avsnittet om utökad beskrivning.

STDERR

Standard error används endast för diagnostiska meddelanden.

UTDATAFILER

Inga.

UTÖKAD BESKRIVNING

Operanden format används som formatsträng ungefär enligt samma modell som printf() i C, men med några POSIX-specifika regler och undantag.

Grundläggande regler

  • Ett vanligt mellanslag i formatsträngen behandlas som ett vanligt
 tecken, utom när det används som flagga i en konverteringsspecifikation.
  • Ett enkelt citationstecken behandlas som ett vanligt tecken.
  • Förutom vanliga escape-sekvenser som \\, \n,
 \t, \r och liknande stöds även \ddd, där
 ddd är ett ett-, två- eller tresiffrigt oktaltal.
  • Implementationen får inte lägga till extra blanktecken eller nollor
 utöver vad formatsträngen anger för vissa numeriska konverteringar.
  • Konverteringarna a, A, e, E, f, F, g
 och G behöver inte stödjas.

Konverteringen %b

En extra konverteringsspecifikation, %b, ska stödjas.

Argumentet behandlas då som en sträng som kan innehålla backslash-escapes.

Stödda escape-sekvenser i %b:

  • \\, \a, \b, \f,
 \n, \r, \t, \v
  • \0ddd, där ddd är ett oktaltal med 0 till 3 siffror
  • \c, som gör att inget mer skrivs ut: resten av den aktuella
 strängen, återstående strängargument och resten av formatsträngen
 ignoreras

Tolkningen av backslash följt av andra tecken är ospecificerad.

Återanvändning av formatsträngen

Formatoperanden återanvänds så många gånger som behövs för att konsumera alla argument.

Om det finns fler konverteringar än argument:

  • %b, %c och %s behandlas som om tom sträng hade givits
  • övriga konverteringar behandlas som om värdet noll hade givits

Om formatsträngen inte innehåller några konverteringsspecifikationer men argument ändå finns, är resultatet ospecificerat.

%c

Argumentet till %c kan vara en sträng.

  • Om strängen innehåller ett eller flera byte skrivs det första bytet ut
  • eventuella ytterligare byte ignoreras
  • om strängen är tom är det ospecificerat om ingenting skrivs eller om en
 nollbyte skrivs

Hur argument tolkas

Argument behandlas som strängar om motsvarande konvertering är:

  • %b
  • %c
  • %s

Argument till flyttalskonverteringar (om de stöds) ska tolkas som om de hade skickats till strtod().

Övriga argument tolkas som C-heltalskonstanter, med vissa tillägg:

  • inledande + eller - är tillåtet
  • om första tecknet är enkel- eller dubbelcitat används tecknets numeriska
 värde i den underliggande teckenkodningen
  • suffigerade heltalskonstanter kan tillåtas

Om ett argument inte kan konverteras fullständigt till rätt intern typ ska ett felmeddelande skrivas till standard error. Verktyget ska då inte avslutas med exit-status 0, men det ska fortsätta bearbeta återstående operander.

Det är inte ett fel om ett argument inte används helt för %b, %c eller %s.

EXIT STATUS

0
Lyckad körning.
>0
Ett fel inträffade.

KONSEKVENSER AV FEL

Standardbeteende.

ANVÄNDNING

printf används ofta som ett portabelt och mer förutsägbart alternativ till echo.

POSIX kräver inte stöd för flyttalsformat som %f och %e, eftersom shellaritmetik normalt är heltalsbaserad. Många implementationer stöder dem ändå som utökning.

För flerbytes-teckenkodningar bör man vara försiktig med:

  • %c
  • precision för %b eller %s

Ingen särskild mekanism finns i POSIX-varianten för att ange fältbredd eller precision med *; detta kan normalt lösas med skalvariabler.

%b är inte en del av ISO C, utan finns här som ett portabelt sätt att skriva strängar med escape-sekvenser.

EXEMPEL

Enkel interaktiv prompt

printf "\aPlease fill in the following: \nName: "
read name
printf "Phone number: "
read phone

Beräkna procent med bc och skriv ut formaterat

while read right wrong ; do
    percent=$(echo "scale=1;($right*100)/($right+$wrong)" | bc)
    printf "%2d right\t%2d wrong\t(%s%%)\n" \
        $right $wrong $percent
done < database_file

Återanvändning av formatsträngen

printf "%5d%4d\n" 1 21 321 4321 54321

Detta ger:

    1  21
  3214321
54321   0

Formatet användes tre gånger, och ett implicit nollvärde användes för den sista %4d-konverteringen.

Teckenvärden

printf "%d\n" 3 +3 -3 \'3 \"+3 "'-3"

I en teckenuppsättning kompatibel med ISO/IEC 646:1991 motsvarar detta numeriska värden för talen och tecknen 3, + och -.

MOTIVERING

printf lades till för att erbjuda funktionalitet som historiskt ofta hanterats av echo, men på ett tydligare och mer portabelt sätt.

Specifikationen följer i stort printf() från ISO C, men med vissa POSIX-anpassningar.

Tidigare versioner var mindre tydliga om hur argument skulle tolkas för heltal respektive flyttal. Den nuvarande beskrivningen klargör detta.

FRAMTIDA RIKTNING

Inga.

SE ÄVEN

awk(1p), bc(1p), echo(1p), fprintf(3p), strtod(3p)

COPYRIGHT

Delar av denna text bygger på IEEE Std 1003.1-2017 (POSIX). Originalstandarden från IEEE och The Open Group är den auktoritativa referensen.

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/printf.1p.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till PC Service som har sponsrat Linux.se med webbhotell.