logo

Sed Command i Linux/Unix med exempel

SED-kommandot i UNIX står för stream editor och det kan utföra många funktioner på filer som att söka, hitta och ersätta, infoga eller radera. Även om den vanligaste användningen av SED-kommandot i UNIX är för substitution eller för att hitta och ersätta. Genom att använda SED kan du redigera filer även utan att öppna dem, vilket är mycket snabbare sätt att hitta och ersätta något i filen, än att först öppna den filen i VI Editor och sedan ändra den.

  • SED är en kraftfull textströmredigerare. Kan infoga, ta bort, söka och ersätta (ersättning).
  • SED-kommandot i unix stöder reguljärt uttryck som gör att det kan utföra komplex mönstermatchning.

Syntax:

 sed OPTIONS... [SCRIPT] [INPUTFILE...]>

Exempel:
Betrakta textfilen nedan som en ingång.



 $cat>geekfile.txt>
 unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

Exempel på kommandon

    Ersätter eller ersätter sträng : Sed-kommandot används oftast för att ersätta texten i en fil. Nedanstående enkla sed-kommando ersätter ordet unix med linux i filen.
     $sed 's/unix/linux/' geekfile.txt>

    Utgång:

     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Här anger s:et ersättningsoperationen. / är avgränsare. Unix är sökmönstret och linux är ersättningssträngen.

    css gräns

    Som standard ersätter kommandot sed den första förekomsten av mönstret på varje rad och det kommer inte att ersätta den andra, tredje … förekomsten på raden. Ersätta den n:te förekomsten av ett mönster på en rad : Använd flaggorna /1, /2 etc för att ersätta den första, andra förekomsten av ett mönster på en linje. Kommandot nedan ersätter den andra förekomsten av ordet unix med linux på en rad.

     $sed 's/unix/linux/2' geekfile.txt>

    Produktion:

     unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>
    Ersätta alla förekomster av mönstret på en rad : Ersättningsflaggan /g (global ersättning) anger kommandot sed för att ersätta alla förekomster av strängen på raden.
     $sed 's/unix/linux/g' geekfile.txt>

    Utgång:

     linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>
    Ersätta från n:e förekomsten till alla förekomster på en rad : Använd kombinationen av /1, /2 etc och /g för att ersätta alla mönster från den n:te förekomsten av ett mönster på en linje. Följande sed-kommando ersätter det tredje, fjärde, femte... unix-ordet med linux-ord på en rad.
     $sed 's/unix/linux/3g' geekfile.txt>

    Produktion:

     unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>
    Sätt i parentes första tecknet i varje ord : Detta sed-exempel skriver ut det första tecknet i varje ord inom parentes.
     $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>

    Produktion:

    postorder traversal binary tree
     (W)elcome (T)o (T)he (G)eek (S)tuff>
    Ersätta sträng på ett specifikt radnummer: Du kan begränsa kommandot sed för att ersätta strängen på ett specifikt radnummer. Ett exempel är
     $sed '3 s/unix/linux/' geekfile.txt>

    Produktion:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Ovanstående sed-kommando ersätter strängen endast på den tredje raden. Duplicera den ersatta raden med /p-flaggan: /p-utskriftsflaggan skriver ut den ersatta raden två gånger på terminalen. Om en rad inte har sökmönstret och inte ersätts, skrivs /p endast ut den raden en gång.

     $sed 's/unix/linux/p' geekfile.txt>

    Produktion:

     linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
    Skriver endast ut de ersatta raderna : Använd alternativet -n tillsammans med /p-utskriftsflaggan för att endast visa de ersatta raderna. Här undertrycker alternativet -n dubblettraderna som genereras av /p-flaggan och skriver ut de ersatta raderna endast en gång.
     $sed -n 's/unix/linux/p' geekfile.txt>

    Produktion:

     linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Om du använder -n ensam utan /p, så skriver inte sed ut någonting. Ersätta sträng på ett radintervall : Du kan ange ett intervall av radnummer till kommandot sed för att ersätta en sträng.

     $sed '1,3 s/unix/linux/' geekfile.txt>

    Produktion:

     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Här ersätter kommandot sed raderna med intervall från 1 till 3. Ett annat exempel är

     $sed '2,$ s/unix/linux/' geekfile.txt>

    Produktion:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>

    Här indikerar $ den sista raden i filen. Så kommandot sed ersätter texten från andra raden till sista raden i filen. Ta bort rader från en viss fil : SED-kommandot kan också användas för att ta bort rader från en viss fil. SED-kommandot används för att utföra raderingsoperation utan att ens öppna filen
    Exempel:
    1. För att ta bort en viss rad säg n i detta exempel

     Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>

    2. För att ta bort en sista rad

    iPhone emojis på Android-telefon
     Syntax: $ sed '$d' filename.txt>

    3. För att ta bort rad från intervallet x till y

     Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>

    4. För att ta bort från n:e till sista raden

     Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>

    5. För att ta bort mönstermatchningslinje

     Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>


SED-kommando i Linux | Set 2