printf(1p): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (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') |
Admin (diskussion | bidrag) |
||
| (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,\roch 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.