Sed

Från Wiki.linux.se
Version från den 22 februari 2024 kl. 07.43 av Admin (diskussion | bidrag) (Skapade sidan med ' ''SED'' (1P) POSIX programmeringsmanual ''SED'' (1P) ==== PROLOG ==== Den här manualsidan är en del av POSIX-programmerarens manual. De Linux-implementeringen av det här gränssnittet kan skilja sig åt (konsultera motsvarande Linux-manualsida för detaljer om Linux-beteende), eller så kanske gränssnittet inte är implementerat på Linux. ==== NAME ==== sed — strömredigerare ==== SYNOPSIS ==== se...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök
SED (1P) POSIX programmeringsmanual                 SED (1P)

PROLOG

       Den här manualsidan är en del av POSIX-programmerarens manual. De
       Linux-implementeringen av det här gränssnittet kan skilja sig åt (konsultera
       motsvarande Linux-manualsida för detaljer om Linux-beteende),
       eller så kanske gränssnittet inte är implementerat på Linux.

NAME

       sed — strömredigerare

SYNOPSIS

       sed [ -n ] script  [ fil ... ]

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

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

BESKRIVNING

       Sed - verktyget är en strömredigerare som ska läsa en eller flera
       textfiler, gör redigeringsändringar enligt ett redigeringsskript
       kommandon och skriv resultaten till standardutdata. Manuset
       ska hämtas från antingen skriptoperandsträngen eller en
       kombination av alternativ-argumenten från -e script och -f 
       script_file alternativ.

ALTERNATIV

       Sed - verktyget ska överensstämma med Base Definitions-volymen för
       POSIX.1‐2017, avsnitt 12.2 , Riktlinjer för verktygssyntax , utom
       att ordningen för presentationen av alternativen -e och -f är
       signifikant.

       Följande alternativ ska stödjas:

       -e script Lägg till de redigeringskommandon som anges av skriptet
                 option-argument till slutet av redigeringsskriptet
                 kommandon.

       -f script_file 
                 Lägg till redigeringskommandona i filen script_file till
                 slutet av skriptet för redigeringskommandon.

       -n         Undertryck standardutgången (där varje rad, efter
                 den granskas för redigering, är skriven till standard
                 produktion). Endast rader som är explicit valda för utdata är
                 skriven.

       Om några -e eller -f alternativ är specificerade, skriptet för redigering
       kommandon ska initialt vara tomma. De kommandon som anges av var och en
       Alternativet -e eller -f ska läggas till skriptet i ordningen
       specificerad. När varje tillägg görs, om föregående tillägg
       (om någon) kom från ett -e- alternativ, en <nylinje> ska infogas
       innan det nya tillskottet. Det resulterande skriptet ska ha samma
       egenskaper som skriptoperanden , som beskrivs i OPERANDS
       sektion.

OPERANDS

       Följande operander ska stödjas:

       fil       Ett sökvägsnamn för en fil vars innehåll läses och
                 redigerade. Om flera filoperander anges,
                 namngivna filer ska läsas i angiven ordning och
                 sammanlänkningen ska redigeras. Om ingen filoperander
                 är specificerade ska standardingången användas.

       script     En sträng som ska användas som skript för redigeringskommandon.
                 Ansökan ska inte presentera ett manus som
                 bryter mot begränsningarna för en textfil förutom det
                 det sista tecknet behöver inte vara en <nyrad>.

STDIN

       Standardinmatningen ska användas om det inte finns några filoperander
       specificeras och ska användas om en filoperand är '-' och
       implementeringen behandlar "-" som en standardinmatning.
       I annat fall ska standardingången inte användas. Se INPUT
       sektionen FILER.

INPUT FILES

       Indatafilerna ska vara textfiler. Skript_filen är namngiven av
       alternativet -f ska bestå av redigeringskommandon.

MILJÖVARIABLER

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

       LANG       Ange ett standardvärde för internationaliseringen
                 variabler som är inställda eller null. (Se basen
                 Definitionsvolym för POSIX.1‐2017, avsnitt 8.2 , Internationaliseringsvariabler
                  för företräde för
                 internationaliseringsvariabler som används för att bestämma
                 värden för språkkategorier.)

       LC_ALL     Om inställt på ett icke-tomt strängvärde, åsidosätt värdena
                 av alla andra internationaliseringsvariabler.

       LC_COLLATE
                 Bestäm lokalen för beteendet för intervall,
                 ekvivalensklasser och sammanställning av flera tecken
                 element i reguljära uttryck.

       LC_CTYPE   Bestäm lokalen för tolkningen av
                 sekvenser av byte med textdata som tecken (till
                 till exempel en-byte i motsats till multi-byte
                 tecken i argument och indatafiler), och
                 karaktärsklassers beteende inom vanliga
                 uttryck.

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

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

ASYNKRONA HÄNDELSER

       Standard.

STDOUT

       Indatafilerna ska skrivas till standardutdata, med
       redigeringskommandon som anges i det tillämpade skriptet. Om 
       alternativet anges, endast de inmatningsrader som valts av
       skriptet ska skrivas till standardutdata.

STDERR

       Standardfelet ska endast användas för diagnostik och varning
       meddelanden.

OUTPUT FILES

       Utdatafilerna ska vara textfiler vars format är beroende
       på de angivna redigeringskommandona.

Utökad BESKRIVNING

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

           [ adress [ , adress ]] funktion

       där funktion representerar ett kommandoverb från en enda tecken
       listan i redigeringskommandon i sed följt av eventuella tillämpliga
       argument.

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

       I standarddrift ska sed cykliskt lägga till en rad med
       in, minus dess avslutande <nylinje>-tecken, i mönstret
       Plats. Läsning från indata ska hoppas över om en <nylinje> var inne
       mönsterutrymmet före ett D -kommando som avslutar föregående cykel.
       Sed- verktyget ska sedan tillämpa alla kommandon vars
       adresser väljer det mönsterutrymmet tills ett kommando startar
       nästa cykel eller slutar. Om inga kommandon uttryckligen startade en ny
       cycle, sedan i slutet av skriptet ska mönsterutrymmet vara
       kopieras till standardutdata (förutom när -n anges) och
       mönsterutrymme ska tas bort. Närhelst mönsterutrymmet är
       skrivs till standardutdata eller en namngiven fil, sed ska omedelbart
       följ den med en <nylinje>.

       Vissa av redigeringskommandona använder ett hållutrymme för att spara hela eller delar
       av mönsterutrymmet för efterföljande hämtning. Mönstret och
       hållutrymmen ska vart och ett kunna rymma minst 8192 byte.

   Adresser i sed
       En adress är antingen ett decimaltal som räknar inmatningsrader
       kumulativt över filer, ett '$' -tecken som adresserar
       sista inmatningsraden, eller en kontextadress (som består av en
       BRE, som beskrivs i Regular Expressions in sed , föregick och
       följt av en avgränsare, vanligtvis ett <snedstreck>).

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

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

       Ett redigeringskommando med två adresser ska välja inkluderande
       intervall från det första mönsterutrymmet som matchar den första adressen
       genom nästa mönsterutrymme som matchar det andra. (Om
       andra adressen är ett nummer mindre än eller lika med radnumret
       först väljs, endast en rad ska väljas.) Med början vid
       första raden efter det valda intervallet ska sed leta efter igen
       den första adressen. Därefter ska processen upprepas.
       Utelämna ena eller båda av adresskomponenterna i
       följande formulär ger odefinierade resultat:

           [ adress [ , adress ]]

   Reguljära uttryck i sed. 
       Sed- verktyget ska stödja de BRE som beskrivs i basen
       Definitionsvolym för POSIX.1‐2017, avsnitt 9.3 , Grundläggande reguljära 
       uttryck , med följande tillägg:

        * I en kontextadress, konstruktionen "\cBREc" , där c är
           alla andra tecken än <backslash> eller <newline>, ska vara
           identisk med "/BRE/" . Om karaktären som anges av c
           visas efter ett <omvänt snedstreck>, så ska det beaktas
           att vara den bokstavliga karaktären, som inte ska avsluta
           BRE. Till exempel, i kontextadressen "\xabc\xdefx" , den
           andra x står för sig själv, så att BRE är "abcxdef" .

        * Escape-sekvensen '\n' ska matcha en <newline> inbäddad i
           mönsterutrymmet. En bokstavlig <nylinje> ska inte användas i
           BRE för en kontextadress eller i ersättningsfunktionen.

        * Om en RE är tom (det vill säga inget mönster anges) sed
           ska bete sig som om den senaste RE som användes i det sista kommandot
           tillämpas (antingen som en adress eller som en del av ett substitut
           kommando) specificerades.

   Redigera kommandon i sed
       I följande lista med redigeringskommandon är det maximala antalet
       tillåtna adresser för varje funktion indikeras med [ 0addr ],
       [ 1addr ] eller [ 2addr ], representerar noll, en eller två adresser.

       Argumenttexten ska bestå av en eller flera rader . Varje
       inbäddad <nylinje> i texten ska föregås av en
       <omvänt snedstreck>. Andra <backslash>-tecken i text ska vara
       tas bort, och följande tecken ska behandlas bokstavligt.
Kommandoverben r och w, och 
       w - flaggan till kommandot s , ta
       en rfile (eller wfile ) parameter, separerad från kommandoverbet
       bokstav eller flagga med ett eller flera <blanka> tecken; implementeringar
       kan tillåta nollseparation som en förlängning.

       Argumentet rfile eller argumentet wfile ska avsluta
       redigeringskommando. Varje w-fil ska skapas före bearbetning
       börjar. Implementeringarna ska stödja minst tio w-filer
       argument i manuset; det faktiska antalet (större än eller lika
       till 10) som stöds av implementeringen är ospecificerad.
       Användningen av parametern wfile ska göra att filen blir det
       ursprungligen skapat, om det inte finns, eller ska ersätta
       innehållet i en befintlig fil.
Kommandoverben 
       b , r , s , t , w , y och : ska acceptera ytterligare
       argument. Följande sammanfattningar anger vilka argument som ska
       separeras från kommandoverben med ett enda <mellanslag>.

       Kommandona a och r schemalägger text för senare utdata . Texten
       specificerat för kommandot a och innehållet i filen
       som anges för kommandot r , ska skrivas till standardutgång
       strax före nästa försök att hämta en rad inmatning när
       exekvera N eller n kommandon, eller när slutet av
       manus. Om skrivet när man når slutet av manuset, och
       -n alternativ specificerades inte, texten ska skrivas efter
       kopiera mönsterrymden till standardutdata. Innehållet i
       fil som anges för kommandot r ska vara från och med den tidpunkt då
       output skrivs, inte tiden då r -kommandot tillämpas. De
       text ska matas ut i den ordning som a och r kommandona
       applicerades på ingången.

       Andra redigeringskommandon än {...} , a , b , c , i , r , t , w , : , och #
       kan följas av ett <semikolon>, valfria <blanka> tecken,
       och ett annat redigeringskommando. Men när ett redigeringskommando
       används med w- flaggan, efter den med ett annat kommando i
       detta sätt ger odefinierade resultat.

       En funktion kan föregås av ett '!'  karaktär, i vilket fall
       funktionen ska tillämpas om adresserna inte väljer
       mönsterutrymme. Noll eller fler <blank> tecken accepteras
       Innan '!'  karaktär. Det är ospecificerat om <blank>
       tecken kan följa "!"  karaktär och överensstämmande
       ansökningar ska inte följa "!"  tecken med <tom>
       tecken.

       Om ett etikettargument (till ett b , t , eller : kommando) innehåller tecken
       utanför den bärbara filnamnsteckenuppsättningen, eller om en etikett är
       längre än 8 byte är beteendet ospecificerat. De
       implementeringen ska stödja etikettargument som erkänns som unika
       upp till minst 8 byte; den faktiska längden (större än eller lika
       till 8) som stöds av implementeringen är ospecificerad. Det är
       ospecificerat om den maximala etikettlängden som stöds överskrids
       orsakar ett fel eller en tyst trunkering.

       [ 2addr ] { redigeringskommando

       redigeringskommando

       ...

       }          Kör en lista med sed- redigeringskommandon endast när
                 mönsterutrymme är valt. Listan över sed- redigering
                 kommandon ska omges av hängslen. Hängslen kan
                 föregås eller följs av <blank> tecken. De
                 <högerklammer> ska föregås av en <nylinje> eller
                 <semikolon> (före eventuella <blanka> tecken
                 före <högerklammer>).

                 Varje kommando i listan över kommandon ska vara
                 avslutas med ett <nylinje>-tecken, eller av en
                 <semikolon> tecken om tillåtet när kommandot är
                 används utanför hängslen. Redigeringskommandona kan vara
                 föregås av <blanka> tecken, men ska inte vara det
                 följt av <blank> tecken.

       [ 1addr ]a\

       text       Skriv text till standardutdata som beskrivits tidigare.

       [ 2addr ]b [ label ] 
                 Förgrena sig till kommandot : verb som bär etikettargumentet 
                 . Om etiketten inte anges, förgrena sig till slutet
                 av manuset.

       [ 2addr ]c\

       text       Ta bort mönsterutrymmet. Med en 0 eller 1 adress eller på
                 i slutet av ett intervall med 2 adresser, placera text på utgången
                 och starta nästa cykel.

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

       [ 2addr ]D   Om mönsterrymden inte innehåller någon <nylinje>, ta bort
                 mönsterutrymme och starta en normal ny cykel som om d
                 kommando utfärdades. Annars tar du bort initialen
                 segment av mönsterrymden genom den första
                 <nylinje> och starta nästa cykel med resultatet
                 mönsterutrymme och utan att läsa någon ny inmatning.

       [ 2addr ]g   Byt ut innehållet i mönsterutrymmet med
                 innehållet i lastutrymmet.

       [ 2addr ]G   Lägg till en <nylinje> till mönsterrymden följt av
                 innehållet i lastutrymmet.

       [ 2addr ]h   Byt ut innehållet i hållutrymmet med
                 innehållet i mönsterutrymmet.

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

       [ 1addr ]i\

       text       Skriv text till standardutdata.

       [ 2addr ]l   (Bokstaven ell.) Skriv mönsterrymden till standard
                 produktion i en visuellt entydig form. Tecknen
                 listade i volymen Base Definitions av POSIX.1‐2017,
                 Tabell 5-1 , Escape-sekvenser och associerade åtgärder 
                 ( '\\' , '\a' , '\b' , '\f' , '\r' , '\t' , '\v') ska vara
                 skriven som motsvarande flyktsekvens; " \n"
                 i den tabellen är inte tillämplig. Ej utskrivbar
                 tecken som inte finns i den tabellen ska skrivas som ett
                 tresiffrigt oktalt nummer (med ett föregående <omvänt snedstreck>)
                 för varje byte i tecknet (mest signifikanta byte
                 först).

                 Långa linor ska vikas med vikpunkten
                 indikeras genom att skriva ett <omvänt snedstreck> följt av ett
                 <nylinje>; längden vid vilken vikning sker är
                 ospecificerad, men bör vara lämplig för utdata
                 enhet. Slutet på varje rad ska markeras med a
                 '$' .

       [ 2addr ]n   Skriv mönsterrymden till standardutdata om
                 standardutgången har inte undertryckts, och ersätt
                 mönsterutrymme med nästa inmatningsrad, minus dess
                 avslutar <nylinje>.

                 Om ingen nästa rad med inmatning är tillgänglig, kommandot n
                 verb ska förgrena sig till slutet av skriptet och avsluta
                 utan att starta en ny cykel.

       [ 2addr ]N   Lägg till nästa rad med inmatning, minus dess avslutning
                 <nylinje>, till mönsterrymden, med hjälp av en inbäddad
                 <newline> för att separera det bifogade materialet från
                 originalmaterial. Observera att det aktuella radnumret
                 ändringar.

                 Om ingen nästa rad med inmatning är tillgänglig, kommandot N
                 verb ska förgrena sig till slutet av skriptet och avsluta
                 utan att starta en ny cykel eller kopiera mönstret
                 utrymme till standardutgång.

       [ 2addr ]p   Skriv mönsterrymden till standardutdata.

       [ 2addr ]P   Skriv mönsterrymden, upp till den första <nyraden>, till
                 standardutgång.

       [ 1addr ]q   Förgrena sig till slutet av skriptet och avsluta utan
                 starta en ny cykel.

       [ 1addr ]r rfil 
                 Kopiera innehållet i rfil till standardutdata som
                 beskrivits tidigare. Om rfile inte finns eller inte kan
                 läsas, ska den behandlas som om den vore en tom
                 fil, vilket inte orsakar något feltillstånd.

       [ 2addr ]s/ BRE / ersättning / flaggor
                 Ersätt ersättningssträngen med instanser av
                 BRE i mönsterrymden. Vilken karaktär som helst förutom
                 <backslash> eller <newline> kan användas istället för a
                 <slash> för att avgränsa BRE och ersättning. Inom
                 BRE och ersättning, själva BRE-avgränsaren
                 kan användas som ett bokstavligt tecken om det föregås av
                 ett <omvänt snedstreck>.

                 Ersättningssträngen ska skannas från början
                 att sluta. En <ampersand> ( '&' ) som visas i
                 ersättning ska ersättas av strängmatchning
                 BRE. Den speciella betydelsen av '&' i detta sammanhang kan
                 undertryckas genom att föregå den av ett <omvänt snedstreck>. De
                 tecknen "\ n" , där n är en siffra, ska ersättas
                 av texten som matchas av motsvarande bakåtreferens
                 uttryck. Om motsvarande bakåtreferens
                 uttrycket matchar inte, då tecknen "\ n"
                 ska ersättas av den tomma strängen. Den speciella
                 betydelsen av "\ n" där n är en siffra i detta sammanhang, kan
                 undertryckas genom att föregå den av ett <omvänt snedstreck>. För
                 varandra <backslash> stött på, följande
                 karaktär ska förlora sin speciella betydelse (om någon).

                 En rad kan delas upp genom att ersätta en <nylinje> i
                 Det. Ansökan ska undvika <newline> i
                 ersätt genom att föregå den av ett <omvänt snedstreck>.

                 Innebörden av en oescaped <backslash> omedelbart
                 följt av något annat tecken än '&' , <backslash>,
                 en siffra, <nylinje> eller avgränsningstecknet som används för
                 detta kommando är ospecificerat.

                 En substitution ska anses ha skett
                 utförs även om ersättningssträngen är identisk
                 till strängen som den ersätter. Alla <backslash> som används
                 ändra standardbetydelsen för ett efterföljande tecken
                 ska kasseras från BRE:n eller ersättningen
                 innan du utvärderar BRE eller använder ersättningen.

                 Värdet på flaggor ska vara noll eller mer av:

                 n          Ersätter endast den n :e förekomsten av
                           BRE finns inom mönsterrymden.

                 g          Globalt ersätter alla icke-överlappande
                           instanser av BRE snarare än bara
                           den första. Om både g och n anges,
                           resultaten är ospecificerade.

                 p          Skriv mönsterrymden till standardutdata if
                           en ersättare gjordes.

                 w wfile    Skriv. Lägg till mönsterutrymmet till wfile om en
                           byte gjordes. En överensstämmande
                           ansökan ska föregå wfil- argumentet
                           med ett eller flera <blanka> tecken. Om w
                           flaggan är inte det sista flaggvärdet som anges i a
                           sammanlänkning av flera flaggvärden, den
                           resultaten är odefinierade.

       [ 2addr ]t [ label ] 
                 Test. Förgrena sig till kommandot : verb som bär etiketten if
                 eventuella byten har gjorts sedan den senaste
                 läsning av en ingångsrad eller exekvering av ett t . Om etikett
                 är inte specificerad, förgrena sig till slutet av skriptet.

       [ 2addr ]w wfile 
                 Lägg till (skriv) mönsterrymden till wfile .

       [ 2addr ]x   Byt ut innehållet i mönstret och håll mellanrum.

       [ 2addr ]y/ string1 / string2 / 
                 Ersätt alla förekomster av tecken i sträng1 med
                 motsvarande tecken i string2 . Om en
                 <backslash> följt av ett 'n' visas i string1 eller
                  string2 , de två tecknen ska hanteras som en
                 singel <nylinje>. Om antalet tecken i
                 string1 och string2 är inte lika, eller om någon av de
                 tecken i sträng1 visas mer än en gång
                 resultaten är odefinierade. Vilken karaktär som helst förutom
                 <backslash> eller <newline> kan användas istället för <slash>
                 för att avgränsa strängarna. Om avgränsaren inte är 'n' ,
                 inom string1 och string2 kan själva avgränsaren vara
                 används som ett bokstavligt tecken om det föregås av en
                 <omvänt snedstreck>. Om ett <omvänt snedstreck> tecken är omedelbart
                 följt av ett <backslash>-tecken i string1 eller
                  string2 ska de två <backslash>-tecknen vara
                 räknas som ett enda bokstavligt <backslash>-tecken. De
                 betydelsen av ett <omvänt snedstreck> följt av ett tecken som
                 är inte 'n' , ett <omvänt snedstreck> eller avgränsningstecknet
                 är odefinierat.

       [ 0addr ]: etikett 
                 Gör ingenting. Detta kommando har en etikett som kommandona b 
                 och t förgrenar sig till.

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

                     "%d\n", < nuvarande radnummer >

       [ 0addr ]    Ignorera detta tomma kommando.

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

EXIT STATUS

       Följande utgångsvärden ska returneras:

        0 Lyckad avslutning.

       >0 Ett fel uppstod.

KONSEKVENSER AV FEL

       Standard.

       Följande avsnitt är informativa.

ANVÄNDNING APPLIKATION

       Reguljära uttryck matchar hela strängar, inte bara enskilda
       rader, men en <nylinje> matchas av '\n' i en sed RE; a
       <newline> är inte tillåtet enligt den allmänna definitionen av vanlig
       uttryck i POSIX.1‐2008. Observera också att '\n' inte kan användas till
       matcha en <nylinje> i slutet av en godtycklig inmatningsrad;
       <newline> tecken visas i mönsterrymden som ett resultat avredigeringskommandot 
       N. _

       När du använder sed för att bearbeta sökvägsnamn, rekommenderas det
       LC_ALL, eller åtminstone LC_CTYPE och LC_COLLATE, är inställda på POSIX eller
       C i miljön, eftersom sökvägar kan innehålla bytesekvenser
       som inte bildar giltiga tecken i vissa lokaler, i så fall
       verktygets beteende skulle vara odefinierat. I POSIX-språket
       varje byte är ett giltigt enkelbytetecken, och därför detta
       problem undviks.

EXEMPEL

       Detta sed -skript simulerar kommandot BSD cat  -s , squeezing
       överflödiga tomma rader från standardinmatning.

           sed -n '
           # Skriv rader som inte är tomma.
           /./ {
               sid
               d
               }
           # Skriv en enda tom rad och leta sedan efter fler tomma rader.
           /^$/ sid
           # Hämta nästa rad, kassera den hållna <nylinjen> (tom rad),
           # och leta efter fler tomma rader.
           :Tömma
           /^$/ {
               N
               s/.//
               b Tom
               }
           # Skriv den icke-tomma raden innan du går tillbaka till sökningen
           # för den första i en uppsättning tomma rader.
               sid
           '

       Följande sed- kommando är en mycket enklare metod för att klämma
       tomma rader, även om det inte är riktigt detsamma som katt  -s eftersom det
       tar bort alla initiala tomma rader:

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

RATIONALE        

       Denna volym av POSIX.1‐2017 kräver implementeringar för att stödja
       minst tio distinkta wfiler , matchande historisk praxis på
       många implementeringar. Implementeringar uppmuntras att stödja
       fler, men överensstämmande applikationer bör inte överskrida denna gräns.

       Utgångsstatuskoderna som anges här skiljer sig från de i
       System V. System V returnerar 2 för förvrängda sed- kommandon, men
       returnerar noll med sitt användningsmeddelande eller om indatafilen kunde
       inte öppnas. Standardutvecklarna ansåg att detta var en
       insekt.

       Det sätt på vilket l -kommandot skriver icke-utskrivbara tecken
       ändrades för att undvika den historiska backspace-overstrike-metoden,
       och andra krav för att uppnå entydiga resultat lades till.
       Se MOTIVERING för ed(1p) för detaljer om det valda formatet,
       vilket är samma som valts för sed .

       Denna volym av POSIX.1‐2017 kräver implementeringar för att tillhandahålla
       mönster och håll mellanslag på minst 8192 byte, större än
       4000 byte utrymmen som används av vissa historiska implementeringar, men
       mindre än gränsen på 20480 byte som användes i ett tidigt förslag.
       Implementeringar uppmuntras att allokera dynamiskt större
       mönster och håll utrymmen efter behov.

       Kraven för godkännande av <blank> och <mellanslag> tecken
       i kommandorader har gjorts mer explicit än i början
       förslag för att tydligt beskriva den historiska praktiken och till
       ta bort förvirring om frasen ``skydda initiala tomrum [ sic ]
       och flikar från strippningen som görs på varje skriptrad''
       som förekommer i mycket av den historiska dokumentationen av sed
       bruksbeskrivning av text. (Alla implementeringar är inte kända
       att ta bort <blanka> tecken från textrader, men
       de har alla tillåtit inledande <blank> tecken före
       adress på en kommandorad.)

       Behandlingen av '#' kommentarer skiljer sig från SVID som endast
       tillåter en kommentar som den första raden i skriptet, men matchar
       BSD-härledda implementeringar. Kommentartecken behandlas som
       ett kommando, och det har samma egenskaper när det gäller att vara
       accepteras med inledande <blank> tecken; BSD-implementeringen
       har historiskt stött detta.

       Tidiga förslag krävde att en script_file hade minst en
       icke-kommentarrad. Vissa historiska implementeringar har fungerat i
       oväntade sätt om så inte var fallet. Standarden
       utvecklare ansåg att detta var felaktigt beteende och det
       applikationsutvecklare ska inte behöva undvika den här funktionen. A
       korrekt implementering av denna volym av POSIX.1‐2017 ska
       tillåt script_file s som endast består av kommentarsrader.

       Tidiga förslag indikerade att om -e och -f alternativ var
       blandade, alla -e- alternativ bearbetades före eventuella -f- alternativ.
       Detta har ändrats för att behandla dem i den ordning som presenteras
       eftersom det matchar historisk praxis och är mer intuitivt.

       Behandlingen av p -flaggan till kommandot s skiljer sig mellan
       System V och BSD-baserade system när standardutgången är
       undertryckt. I de två exemplen:

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

       denna volym av POSIX.1‐2017, BSD, System V-dokumentation och
       SVID indikerar att det första exemplet ska skriva två rader med
       A , medan den andra ska skriva en. Vissa System V-system
       skriv A endast en gång i båda exemplen eftersom p -flaggan är
       ignoreras om alternativet -n inte anges.

       Detta är ett fall av en diametral skillnad mellan system som
       kunde inte förenas genom kompromissen att förklara den
       beteende vara ospecificerat. SVID/BSD/System V-dokumentationen
       beteende antogs för denna volym av POSIX.1-2017 eftersom:

        * Ingen känd dokumentation för något historiskt system beskriver
           interaktion mellan p -flaggan och alternativet -n .

        * Det valda beteendet är mer korrekt eftersom det inte finns något
           teknisk motivering för eventuell interaktion mellan p 
           -flaggan och alternativet -n . Ett förhållande mellan -n och p
           flaggan kan antyda att de bara används tillsammans, men detta
           ignorerar giltiga skript som avbryter den cykliska karaktären av
           bearbetningen genom användning av D , d , q , eller förgrening
           kommandon. Sådana skript förlitar sig på p -suffixet för att skriva
           mönsterutrymme eftersom de inte använder standarden
           utdata längst ned i skriptet.

        * Eftersom alternativet -n gör p -flaggan onödig, någon
           interaktion skulle bara vara användbart om sed -skript skrevs
           att köra både med och utan alternativet -n . Detta tror man
           att vara osannolikt. Det är ännu mer osannolikt att programmerare
           har kodat p -flaggan och förväntar sig att den är onödig. Därför att
           interaktionen var inte dokumenterad, sannolikheten för en
           programmerare upptäcker interaktionen och beroende på den är
           minskat ytterligare.

        * Slutligen, skript som går sönder under det angivna beteendet
           producera för mycket produktion istället för för lite, dvs
           lättare att diagnostisera och korrigera.

       Formen för ersättningskommandot som använder suffixet n var
       begränsat till de första 512 matcherna i ett tidigt förslag. Denna gräns
       har tagits bort eftersom det inte finns någon anledning att en redaktör bearbetar
       Rader med {LINE_MAX} längd bör ha denna begränsning. De
       kommando s/a/A/2047 bör kunna ersätta 2047:e
       förekomst av a på en linje.

       Kommandona b , t och : är dokumenterade för att ignorera inledande vit
       utrymme, men inget nämnts om efterföljande vitt utrymme. Historisk
       implementeringar av sed tilldelade olika platser till etiketterna
        "x" och "x" . Detta är inte användbart, och leder till subtila
       programmeringsfel, men det är historisk praxis och förändras
       det skulle teoretiskt kunna bryta fungerande skript. Implementatorer är
       uppmuntras att tillhandahålla varningsmeddelanden om etiketter som är
       aldrig refereras av ett b- eller t -kommando, hoppar till etiketter som inte gör det
       existerar och markerar argument som är föremål för trunkering.

       Tidigare versioner av denna standard möjliggjorde implementeringar
       med andra bytes än åtta bitar, men detta har modifierats i
       denna version.

FUTURE DIRECTIONS

       Ingen.

SE ÄVEN

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

       Basdefinitionsvolymen för POSIX.1‐2017, Tabell 5-1 , Escape 
       Sequences and Associated Actions , Kapitel 8 , Miljövariabler
        , Avsnitt 9.3 , Grundläggande reguljära uttryck , Avsnitt 12.2 ,
        Riktlinjer för verktygssyntax

COPYRIGHT

       Delar av denna text är omtryckta och reproducerade i elektronisk form
       blankett från IEEE Std 1003.1-2017, Standard for Information
       Teknik -- Portable Operating System Interface (POSIX), The
       Open Group Base Specifications Issue 7, 2018 Edition, Copyright
       (C) 2018 av Institutet för el och elektronik
       Engineers, Inc och The Open Group. Vid ev
       diskrepans mellan denna version och den ursprungliga IEEE och The
       Open Group Standard, den ursprungliga IEEE och The Open Group
       Standard är referensdokumentet. Den ursprungliga standarden kan vara
       fås online på http://www.opengroup.org/unix/online.html .

       Eventuella typografiska eller formateringsfel som visas på den här sidan
       mest sannolikt har införts under omvandlingen av
       källfilerna till man page-format. För att rapportera sådana fel, se
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .

IEEE/The Open Group 2017                            SED (1P)