sed(1p)

Från Wiki.linux.se
Version från den 10 januari 2026 kl. 07.11 av Admin (diskussion | bidrag) (Skapade sidan med 'Jag gör om HTML-innehållet du klistrade in till MediaWiki-format, med samma stil som dina tidigare man-sida-översättningar: `==`-rubriker, `<pre>` för kodblock, och interna länkar i “SE ÄVEN”. == PROLOG == <pre> Den här manualsidan är en del av POSIX Programmer's Manual. Linux- implementationen av detta gränssnitt kan skilja sig (konsultera motsvarande Linux-manualsida för detaljer om Linux-beteende), eller så kan gränssnittet saknas i Linux. </pre>...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Jag gör om HTML-innehållet du klistrade in till MediaWiki-format, med samma stil som dina tidigare man-sida-översättningar: `==`-rubriker, `

` för kodblock, och interna länkar i “SE ÄVEN”.


== PROLOG ==

<pre>
Den här manualsidan är en del av POSIX Programmer's Manual. Linux-
implementationen av detta gränssnitt kan skilja sig (konsultera motsvarande
Linux-manualsida för detaljer om Linux-beteende), eller så kan gränssnittet
saknas i Linux.

NAMN

sed — strömredigerare

SYNOPSIS

sed [-n] script [file...]

sed [-n] -e script [-e script]... [-f script_file]... [file...]

sed [-n] [-e script]... -f script_file [-f script_file]... [file...]

BESKRIVNING

Verktyget sed är en strömredigerare som läser en eller flera textfiler,
gör redigeringsändringar enligt ett skript av redigeringskommandon, och
skriver resultatet till standardutmatning. Skriptet hämtas antingen från
operandsträngen script eller från en kombination av option-argumenten för
alternativen -e script och -f script_file.

ALTERNATIV

Verktyget sed ska följa Base Definitions-volymen i POSIX.1-2017,
Avsnitt 12.2, Utility Syntax Guidelines, med undantag att ordningen
mellan alternativen -e och -f är signifikant.

Följande alternativ ska stödjas:

-e script
        Lägg till de redigeringskommandon som anges av option-argumentet
        script till slutet av skriptet med redigeringskommandon.

-f script_file
        Lägg till de redigeringskommandon som finns i filen script_file
        till slutet av skriptet med redigeringskommandon.

-n
        Undertryck standardutmatningen (där varje rad, efter att den
        granskats för redigering, skrivs till standardutmatning).
        Endast rader som explicit väljs för utmatning skrivs.

Om några -e- eller -f-alternativ anges ska skriptet med redigeringskommandon
initialt vara tomt. Kommandona som anges av varje -e- eller -f-alternativ
ska läggas till skriptet i den ordning de anges. När varje tillägg görs
ska, om föregående tillägg (om något) kom från ett -e-alternativ, ett
<newline> infogas före det nya tillägget. Det resulterande skriptet ska ha
samma egenskaper som operanden script, beskriven i avsnittet OPERANDER.

OPERANDER

Följande operander ska stödjas:

file
        En sökväg till en fil vars innehåll läses och redigeras.
        Om flera file-operander anges ska de namngivna filerna läsas i den
        ordning som anges och sammanfogningen ska redigeras. Om inga
        file-operander anges ska standard in användas.

script
        En sträng som ska användas som skriptet med redigeringskommandon.
        Applikationen ska inte presentera ett script som bryter mot
        begränsningarna för en textfil, med undantag att sista tecknet
        inte behöver vara ett <newline>.

STDIN

Standard in ska användas om inga file-operander anges, och ska användas om
en file-operand är '-' och implementationen behandlar '-' som att det betyder
standard in. Annars ska standard in inte användas. Se avsnittet INPUT FILES.

INPUT FILES

Indatafilerna ska vara textfiler. script_file:erna som namnges av
alternativet -f ska bestå av redigeringskommandon.

MILJÖVARIABLER

Följande miljövariabler ska påverka körningen av sed:

LANG
        Tillhandahåll ett standardvärde för internationaliseringsvariabler
        som är odefinierade eller tomma. (Se Base Definitions-volymen i
        POSIX.1-2017, Avsnitt 8.2, Internationalization Variables för
        prioritet mellan internationaliseringsvariabler som används för att
        bestämma värden för locale-kategorier.)

LC_ALL
        Om satt till en icke-tom sträng, åsidosätt värdena för alla andra
        internationaliseringsvariabler.

LC_COLLATE
        Bestäm locale för beteendet hos intervall, ekvivalensklasser och
        flerteckens kollationselement inom reguljära uttryck.

LC_CTYPE
        Bestäm locale för tolkning av sekvenser av byte av textdata som
        tecken (t.ex. enkelbyte kontra multibyte-tecken i argument och
        indatafiler), och beteendet hos teckenklasser inom reguljära
        uttryck.

LC_MESSAGES
        Bestäm locale som ska användas för att påverka format och innehåll i
        diagnostiska meddelanden som skrivs till standard error.

NLSPATH
        Bestäm platsen för meddelandekataloger för bearbetning av LC_MESSAGES.

ASYNKRONA HÄNDELSER

Standard.

STDOUT

Indatafilerna ska skrivas till standardutmatning, med redigeringskommandona i
skriptet tillämpade. Om alternativet -n anges ska endast de indatarader som
väljs av skriptet skrivas till standardutmatning.

STDERR

Standard error ska endast användas för diagnostik- och varningsmeddelanden.

OUTPUT FILES

Utdatafilerna ska vara textfiler vars format beror på de redigeringskommandon
som ges.

UTVIDGAD BESKRIVNING

script ska bestå av redigeringskommandon av följande form:

    [address[,address]]function

där function representerar ett enstaka kommandotecken från listan i
Editing Commands in sed, följt av eventuella tillämpliga argument.

Kommandot kan föregås av <blank>-tecken och/eller <semicolon>-tecken.
Function kan föregås av <blank>-tecken. Dessa valfria tecken ska inte ha
någon effekt.

Vid standarddrift ska sed cykliskt lägga till en indatarad, utan dess
avslutande <newline>-tecken, i mönsterutrymmet (pattern space). Läsning från
indata ska hoppas över om ett <newline> fanns i mönsterutrymmet före ett D-
kommando som avslutade föregående cykel. sed ska därefter i ordning tillämpa
alla kommandon vars adresser väljer det mönsterutrymmet, tills ett kommando
startar nästa cykel eller avslutar. Om inga kommandon explicit startade en
ny cykel ska, vid slutet av skriptet, mönsterutrymmet kopieras till
standardutmatning (utom när -n anges) och mönsterutrymmet ska raderas.
Närhelst mönsterutrymmet skrivs till standardutmatning eller en namngiven fil
ska sed omedelbart följa det med ett <newline>.

Vissa redigeringskommandon använder ett hållutrymme (hold space) för att
spara hela eller delar av mönsterutrymmet för senare hämtning. Mönster- och
hållutrymme ska vart och ett kunna hålla minst 8192 byte.

Addresses in sed
    En adress är antingen ett decimaltal som räknar indatarader kumulativt
    över filer, ett '$'-tecken som adresserar sista indataraden, eller en
    kontextadress (som består av ett BRE, enligt Regular Expressions in sed,
    föregånget och följt av en avgränsare, vanligtvis <slash>).

    Ett redigeringskommando utan adresser ska välja varje mönsterutrymme.

    Ett redigeringskommando med en adress ska välja varje mönsterutrymme som
    matchar adressen.

    Ett redigeringskommando med två adresser ska välja det inkluderande
    intervallet från det första mönsterutrymmet som matchar första adressen
    till och med nästa mönsterutrymme som matchar den andra adressen. (Om den
    andra adressen är ett tal mindre än eller lika med det först valda
    radnumret ska endast en rad väljas.) Från och med första raden efter det
    valda intervallet ska sed återigen söka efter första adressen. Därefter
    upprepas processen. Att utelämna en eller båda adressdelarna i följande
    form ger odefinierade resultat:

        [address[,address]]

Regular Expressions in sed
    sed ska stödja de BRE:er som beskrivs i Base Definitions-volymen i
    POSIX.1-2017, Avsnitt 9.3, Basic Regular Expressions, med följande
    tillägg:

     *  I en kontextadress ska konstruktionen "\cBREc", där c är ett tecken
        annat än <backslash> eller <newline>, vara identisk med "/BRE/".
        Om tecknet c förekommer efter ett <backslash> ska det betraktas som
        det literal-tecknet och ska inte avsluta BRE:t. Exempel: i
        kontextadressen "\xabc\xdefx" står det andra x för sig själv, så BRE:t
        är "abcxdef".

     *  Escape-sekvensen '\n' ska matcha ett <newline> inbäddat i
        mönsterutrymmet. Ett literal <newline> ska inte användas i BRE:t för
        en kontextadress eller i substitueringsfunktionen.

     *  Om ett RE är tomt (dvs. inget mönster anges) ska sed bete sig som om
        det sista RE som användes i det senast tillämpade kommandot (antingen
        som adress eller som del av ett substitueringskommando) var angivet.

Editing Commands in sed
    I följande lista av redigeringskommandon anges maximalt antal tillåtna
    adresser för varje function med [0addr], [1addr] eller [2addr].

    Argumentet text ska bestå av en eller flera rader. Varje inbäddat
    <newline> i text ska föregås av ett <backslash>. Andra <backslash>-tecken
    i text ska tas bort och efterföljande tecken ska behandlas bokstavligt.

    Kommandotecknen r och w, samt w-flaggan till s-kommandot, tar en rfile
    (eller wfile)-parameter, separerad från kommandotecknet eller flaggan av
    ett eller flera <blank>-tecken; implementationer kan tillåta noll
    separation som en utökning.

    Argumentet rfile eller wfile ska avsluta redigeringskommandot. Varje
    wfile ska skapas innan bearbetning börjar. Implementationer ska stödja
    minst tio wfile-argument i skriptet; det faktiska antalet (>= 10) är
    ospecificerat. Parametern wfile ska göra att filen initialt skapas om
    den inte finns, eller ersätta innehållet i en befintlig fil.

    Kommandotecknen b, r, s, t, w, y och : ska acceptera ytterligare
    argument. Följande synopser anger vilka argument som ska separeras från
    kommandotecknen med ett enkelt <space>.

    Kommandona a och r schemalägger text för senare utmatning. Texten som
    anges för a-kommandot, och innehållet i filen som anges för r-kommandot,
    ska skrivas till standardutmatning precis före nästa försök att hämta en
    indatarad när N- eller n-kommandona körs, eller när slutet av skriptet
    nås. Om det skrivs när slutet av skriptet nås och -n-alternativet inte
    angavs ska texten skrivas efter att mönsterutrymmet kopierats till
    standardutmatning. Innehållet i filen som anges för r-kommandot ska vara
    som vid tidpunkten då utmatningen skrivs, inte när r-kommandot tillämpas.
    Texten ska matas ut i den ordning som a- och r-kommandona tillämpades på
    indatat.

    Redigeringskommandon andra än {...}, a, b, c, i, r, t, w, :, och # kan
    följas av ett <semicolon>, valfria <blank>-tecken, och ett annat
    redigeringskommando. Men när ett s-redigeringskommando används med w-
    flaggan ger det odefinierade resultat att följa det med ett annat
    kommando på detta sätt.

    En function kan föregås av ett '!' i vilket fall funktionen ska tillämpas
    om adresserna inte väljer mönsterutrymmet. Noll eller fler <blank>-tecken
    accepteras före '!' . Det är ospecificerat om <blank>-tecken kan följa
    efter '!' och konforma applikationer ska inte följa '!' med <blank>.

    Om ett label-argument (till b, t eller : ) innehåller tecken utanför den
    portabla filnamnsteckenmängden, eller om label är längre än 8 byte, är
    beteendet ospecificerat. Implementationer ska stödja label-argument som
    känns igen som unika upp till minst 8 byte; den faktiska längden (>= 8)
    är ospecificerad. Det är ospecificerat om överskridande av maximal
    label-längd orsakar fel eller tyst trunkering.

[2addr] {
editing command
editing command
...
}
        Kör en lista av sed-redigeringskommandon endast när mönsterutrymmet
        är valt. Listan omges av klamrar. Klamrarna kan föregås eller följas
        av <blank>. <right-brace> ska föregås av <newline> eller <semicolon>
        (före eventuella valfria <blank> som föregår <right-brace>).

        Varje kommando i listan ska avslutas av <newline> eller av ett
        <semicolon> om det är tillåtet när kommandot används utanför
        klamrarna. Kommandon kan föregås av <blank>, men ska inte följas av
        <blank>.

[1addr]a\
text
        Skriv text till standardutmatning som beskrivits ovan.

[2addr]b [label]
        Hoppa (branch) till : kommandotecknet med label-argumentet. Om label
        inte anges, hoppa till slutet av skriptet.

[2addr]c\
text
        Radera mönsterutrymmet. Med 0 eller 1 adress eller vid slutet av ett
        2-adressintervall: skriv text till utmatningen och starta nästa cykel.

[2addr]d
        Radera mönsterutrymmet och starta nästa cykel.

[2addr]D
        Om mönsterutrymmet inte innehåller något <newline>, radera
        mönsterutrymmet och starta en normal ny cykel som om d körts. Annars:
        radera det initiala segmentet genom första <newline>, och starta nästa
        cykel med återstående mönsterutrymme utan att läsa ny indata.

[2addr]g
        Ersätt innehållet i mönsterutrymmet med innehållet i hållutrymmet.

[2addr]G
        Lägg till i mönsterutrymmet ett <newline> följt av innehållet i
        hållutrymmet.

[2addr]h
        Ersätt innehållet i hållutrymmet med innehållet i mönsterutrymmet.

[2addr]H
        Lägg till i hållutrymmet ett <newline> följt av innehållet i
        mönsterutrymmet.

[1addr]i\
text
        Skriv text till standardutmatning.

[2addr]l
        (Bokstaven l.) Skriv mönsterutrymmet till standardutmatning i en
        visuellt entydig form. Tecknen listade i Base Definitions-volymen i
        POSIX.1-2017, Tabell 5-1, Escape Sequences and Associated Actions
        ('\\', '\a', '\b', '\f', '\r', '\t', '\v') ska skrivas som motsvarande
        escape-sekvens; '\n' i tabellen är inte tillämplig. Icke-utskrivbara
        tecken som inte finns i tabellen ska skrivas som ett tresiffrigt
        oktaltal (med föregående <backslash>) för varje byte i tecknet (mest
        signifikanta byte först).

        Långa rader ska vikas, med vikpunkten markerad genom att skriva ett
        <backslash> följt av ett <newline>; längden där vikning sker är
        ospecificerad, men bör vara lämplig för utdataenheten. Slutet av varje
        rad ska markeras med ett '$'.

[2addr]n
        Skriv mönsterutrymmet till standardutmatning om standardutmatning inte
        undertryckts, och ersätt mönsterutrymmet med nästa indatarad, utan
        dess avslutande <newline>.

        Om ingen nästa indatarad finns ska n hoppa till slutet av skriptet och
        avsluta utan att starta en ny cykel.

[2addr]N
        Lägg till nästa indatarad, utan dess avslutande <newline>, till
        mönsterutrymmet, med ett inbäddat <newline> som separator mellan den
        tillagda delen och den ursprungliga. Observera att aktuellt radnummer
        ändras.

        Om ingen nästa indatarad finns ska N hoppa till slutet av skriptet och
        avsluta utan att starta en ny cykel eller kopiera mönsterutrymmet till
        standardutmatning.

[2addr]p
        Skriv mönsterutrymmet till standardutmatning.

[2addr]P
        Skriv mönsterutrymmet upp till första <newline> till standardutmatning.

[1addr]q
        Hoppa till slutet av skriptet och avsluta utan att starta en ny cykel.

[1addr]r rfile
        Kopiera innehållet i rfile till standardutmatning som beskrivits ovan.
        Om rfile inte finns eller inte kan läsas ska det behandlas som en tom
        fil utan fel.

[2addr]s/BRE/replacement/flags
        Ersätt replacement-strängen för instanser av BRE i mönsterutrymmet.
        Valfritt tecken (utom <backslash> eller <newline>) kan användas i
        stället för <slash> som avgränsare. Inuti BRE och replacement kan
        avgränsaren användas bokstavligt om den föregås av <backslash>.

        Replacement skannas från början till slut. Ett '&' i replacement
        ersätts av strängen som matchar BRE. Den specialbetydelsen kan
        undertryckas med föregående <backslash>. Tecknen "\n", där n är en
        siffra, ersätts av texten matchad av motsvarande bakreferens. Om
        bakreferensen inte matchar ersätts "\n" med tom sträng. Den
        specialbetydelsen kan undertryckas med föregående <backslash>. För
        varje annat <backslash> förlorar följande tecken sin specialbetydelse
        (om någon).

        En rad kan delas genom att substituera in ett <newline>. Applikationen
        ska escapa <newline> i replacement genom att föregå det med ett
        <backslash>.

        Betydelsen av ett oescapat <backslash> direkt följt av ett tecken som
        inte är '&', <backslash>, en siffra, <newline>, eller avgränsaren för
        kommandot, är ospecificerad.

        En substitution anses utförd även om replacement är identisk med det
        som ersätts. Varje <backslash> som ändrar defaultbetydelsen av ett
        efterföljande tecken ska kastas från BRE eller replacement innan BRE
        evalueras eller replacement används.

        flags består av noll eller fler av:

        n
                Substituera endast för den n:te förekomsten av BRE i
                mönsterutrymmet.

        g
                Global substitution för alla icke-överlappande instanser av
                BRE i stället för bara den första. Om både g och n anges är
                resultatet ospecificerat.

        p
                Skriv mönsterutrymmet till standardutmatning om en ersättning
                gjordes.

        w wfile
                Skriv (append) mönsterutrymmet till wfile om en ersättning
                gjordes. Applikationen ska föregå wfile med ett eller fler
                <blank>-tecken. Om w-flaggan inte är den sista i en
                sammanfogning av flera flaggor är resultatet odefinierat.

[2addr]t [label]
        Test. Hoppa till : kommandotecknet med label om några substitutioner
        har gjorts sedan senaste läsning av indatarad eller körning av t. Om
        label inte anges, hoppa till slutet av skriptet.

[2addr]w wfile
        Lägg till (write) mönsterutrymmet till wfile.

[2addr]x
        Byt innehållet mellan mönster- och hållutrymme.

[2addr]y/string1/string2/
        Ersätt alla förekomster av tecken i string1 med motsvarande tecken i
        string2. Om en <backslash> följd av 'n' förekommer i string1 eller
        string2 ska de två tecknen behandlas som ett enda <newline>. Om antalet
        tecken i string1 och string2 inte är lika, eller om något tecken i
        string1 förekommer mer än en gång, är resultatet odefinierat. Valfritt
        tecken (utom <backslash> eller <newline>) kan användas som avgränsare.
        Om avgränsaren inte är 'n' kan den användas bokstavligt i string1 och
        string2 om den föregås av <backslash>. Om en <backslash> direkt följs
        av en <backslash> i string1 eller string2 ska de räknas som ett enda
        literal <backslash>. Betydelsen av <backslash> följt av tecken som
        inte är 'n', <backslash> eller avgränsaren är odefinierad.

[0addr]:label
        Gör ingenting. Detta kommando bär en label som b och t kan hoppa till.

[1addr]=
        Skriv följande till standardutmatning:

            "%d\n", <aktuellt radnummer>

[0addr]
        Ignorera detta tomma kommando.

[0addr]#
        Ignorera '#' och resten av raden (behandla som kommentar), med det
        enda undantaget att om de två första tecknen i skriptet är "#n" ska
        standardutmatningen undertryckas; detta är ekvivalent med -n på
        kommandoraden.

SLUTSTATUS

Följande slutvärden ska returneras:

0
        Lyckad körning.

>0
        Ett fel inträffade.

KONSEKVENSER AV FEL

Standard.

Följande avsnitt är informativa.

ANVÄNDNING

Reguljära uttryck matchar hela strängar, inte bara enskilda rader, men ett
<newline> matchas av '\n' i ett sed-RE; ett <newline> är inte tillåtet i den
allmänna definitionen av reguljära uttryck i POSIX.1-2008. Notera också att
'\n' inte kan användas för att matcha ett <newline> i slutet av en godtycklig
indatarad; <newline>-tecken förekommer i mönsterutrymmet som ett resultat av
redigeringskommandot N.

När sed används för att bearbeta sökvägar rekommenderas att LC_ALL, eller åt
minstone LC_CTYPE och LC_COLLATE, sätts till POSIX eller C i miljön, eftersom
sökvägar kan innehålla bytsekvenser som inte bildar giltiga tecken i vissa
locales; i så fall blir verktygets beteende odefinierat. I POSIX-locale är
varje byte ett giltigt enkelbyte-tecken och problemet undviks därmed.

EXEMPEL

Detta sed-skript simulerar BSD cat -s-kommandot genom att ”klämma ihop”
överskjutande tomrader från standard in.

    sed -n '
    # Skriv icke-tomma rader.
    /./ {
        p
        d
        }
    # Skriv en enda tom rad, leta sedan efter fler tomrader.
    /^$/    p
    # Hämta nästa rad, kasta det hållna <newline> (tom rad),
    # och leta efter fler tomrader.
    :Empty
    /^$/    {
        N
        s/.//
        b Empty
        }
    # Skriv den icke-tomma raden innan vi går tillbaka och söker
    # efter den första i en uppsättning tomrader.
        p
    '

Följande sed-kommando är en mycket enklare metod för att klämma ihop tomrader,
även om det inte är exakt samma som cat -s eftersom det tar bort eventuella
inledande tomrader:

    sed -n '/./,/^$/p'

MOTIVERING

Denna volym av POSIX.1-2017 kräver att implementationer stödjer minst tio
distinkta wfile:er, i linje med historisk praxis på många implementationer.
Implementationer uppmuntras att stödja fler, men konforma applikationer bör
inte överskrida denna gräns.

Slutstatuskoderna här skiljer sig från System V. System V returnerar 2 för
”garbled” sed-kommandon, men returnerar noll med sin användningshjälp eller om
indatafilen inte kunde öppnas. Standardutvecklarna ansåg detta vara en bugg.

Sättet som l-kommandot skriver icke-utskrivbara tecken ändrades för att undvika
den historiska backspace-overstrike-metoden, och andra krav för entydig
utmatning lades till. Se RATIONALE för ed(1p) för detaljer om valt format, som
är samma som valt för sed.

Denna volym av POSIX.1-2017 kräver mönster- och hållutrymmen om minst 8192 byte,
större än 4000 byte som vissa historiska implementationer använde, men mindre
än 20480 byte i ett tidigt förslag. Implementationer uppmuntras att dynamiskt
allokera större utrymmen vid behov.

Kraven på acceptans av <blank> och <space> i kommandorader har gjorts mer
explicit än i tidiga förslag för att tydligt beskriva historisk praxis och
undanröja förvirring kring frasen ”protect initial blanks [sic] and tabs from
the stripping that is done on every script line” som förekommer i mycket
historisk dokumentation om sed:s textbeskrivning. (Inte alla implementationer
är kända för att ha strippat <blank> från textrader, även om de alla tillåtit
inledande <blank> före adressen på en kommandorad.)

Behandlingen av '#'-kommentarer skiljer sig från SVID som endast tillåter en
kommentar som första raden i skriptet, men matchar BSD-deriverade
implementationer. Kommentar-tecknet behandlas som ett kommando och har samma
egenskaper vad gäller acceptans med inledande <blank>; BSD har historiskt
stött detta.

Tidiga förslag krävde att en script_file hade minst en icke-kommentarrad. Vissa
historiska implementationer har betett sig oväntat om så inte var fallet.
Standardutvecklarna ansåg detta vara felaktigt och att applikationsutvecklare
inte ska behöva undvika funktionen. En korrekt implementation av denna volym av
POSIX.1-2017 ska tillåta script_file:er som endast består av kommentarrader.

Tidiga förslag angav att om -e och -f blandades skulle alla -e behandlas före
alla -f. Detta har ändrats till att processa dem i den ordning de presenteras,
eftersom det matchar historisk praxis och är mer intuitivt.

Behandlingen av p-flaggan till s-kommandot skiljer sig mellan System V och
BSD-baserade system när standardutmatningen undertrycks. I följande två
exempel:

    echo a | sed    's/a/A/p'
    echo a | sed -n 's/a/A/p'

anger POSIX.1-2017, BSD, System V-dokumentation och SVID att första exemplet
ska skriva två rader med A, medan det andra ska skriva en. Vissa System V-
system skriver A endast en gång i båda exemplen eftersom p-flaggan ignoreras om
-n inte anges.

Detta är en diametral skillnad mellan system som inte kunde förenas genom
kompromissen att deklarera beteendet ospecificerat. SVID/BSD/System V-
beteendet antogs för POSIX.1-2017 eftersom:

 *  Ingen känd dokumentation för historiska system beskriver interaktionen
    mellan p-flaggan och -n.

 *  Det valda beteendet är mer korrekt eftersom det inte finns någon teknisk
    motivering för interaktion mellan p och -n. En relation skulle kunna
    antyda att de bara används tillsammans, men detta ignorerar giltiga skript
    som bryter den cykliska behandlingen via D, d, q eller branch-kommandon.
    Sådana skript förlitar sig på p-suffixet för att skriva mönsterutrymmet
    eftersom de inte använder standardutmatningen vid ”botten” av skriptet.

 *  Eftersom -n gör p-flaggan onödig skulle en interaktion endast vara nyttig
    om sed-skript var skrivna för att köras både med och utan -n. Detta anses
    osannolikt. Än mer osannolikt är att programmerare har kod som förväntar
    sig att p-flaggan skulle vara onödig. Då interaktionen inte var
    dokumenterad minskar sannolikheten att någon upptäckt den och beroende av
    den ytterligare.

 *  Slutligen ger skript som fallerar under det specificerade beteendet för
    mycket utdata i stället för för lite, vilket är lättare att felsöka och
    rätta.

Formen av substitueringskommandot som använder n-suffixet begränsades till de
första 512 matchningarna i ett tidigt förslag. Denna gräns har tagits bort
eftersom det inte finns skäl att en editor som bearbetar rader av {LINE_MAX}
ska ha begränsningen. Kommandot s/a/A/2047 ska kunna ersätta den 2047:e
förekomsten av a på en rad.

b-, t- och :-kommandona dokumenteras som att de ignorerar inledande blanksteg,
men inget sägs om avslutande blanksteg. Historiska sed-implementationer har
tilldelat olika platser till etiketterna 'x' och "x ". Detta är inte nyttigt
och leder till subtila programmeringsfel, men är historisk praxis, och
ändringar kan teoretiskt bryta fungerande skript. Implementatörer uppmuntras
att ge varningar om etiketter som aldrig refereras av b eller t, hopp till
etiketter som inte finns, och etikettargument som kan trunkeras.

Tidigare versioner av standarden tillät implementationer med byte som inte var
åtta bitar, men detta har ändrats i denna version.

FRAMTIDA INRIKTNING

Ingen.

SE ÄVEN

[[awk(1p)]], [[ed(1p)]], [[grep(1p)]]

Base Definitions-volymen i POSIX.1-2017, Tabell 5-1, Escape Sequences and
Associated Actions, Kapitel 8, Environment Variables, Avsnitt 9.3, Basic
Regular Expressions, Avsnitt 12.2, Utility Syntax Guidelines

UPPHOVSRÄTT

Delar av denna text är omtryckta och återgivna i elektronisk form från
IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating
System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018
Edition, Copyright (C) 2018 av Institute of Electrical and Electronics
Engineers, Inc och The Open Group. Vid eventuell avvikelse mellan denna
version och den ursprungliga IEEE- och The Open Group-standarden är den
ursprungliga standarden skiljedomande dokument. Originalstandarden kan erhållas
online på http://www.opengroup.org/unix/online.html .

Eventuella typografiska eller formateringsfel som förekommer i denna sida har
troligen introducerats vid konverteringen av källfilerna till man-sidesformat.
För att rapportera sådana fel, se https://www.kernel.org/doc/man-pages/reporting_bugs.html

REFERENSER TILL DENNA SIDA

awk(1p), csplit(1p), dd(1p), ed(1p), ex(1p), grep(1p), head(1p), od(1p), tr(1p)