Ukaz Sed v Linuxu/Unixu s primeri

Ukaz SED v sistemu UNIX pomeni urejevalnik toka in lahko izvaja veliko funkcij v datoteki, kot so iskanje, iskanje in zamenjava, vstavljanje ali brisanje. Čeprav je najpogostejša uporaba ukaza SED v sistemu UNIX za zamenjavo ali iskanje in zamenjavo. Z uporabo SED lahko urejate datoteke, tudi ne da bi jih odprli, kar je veliko hitrejši način, da najdete in zamenjate nekaj v datoteki, kot da to datoteko najprej odprete v urejevalniku VI in jo nato spremenite.

  • SED je zmogljiv urejevalnik besedilnih tokov. Lahko izvaja vstavljanje, brisanje, iskanje in zamenjavo (zamenjava).
  • Ukaz SED v unixu podpira regularne izraze, kar mu omogoča izvajanje kompleksnega ujemanja vzorcev.

Sintaksa:

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

primer:
Spodnjo besedilno datoteko upoštevajte kot vhod.

 $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. 

Vzorčni ukazi

    Zamenjava ali zamenjava niza : Ukaz Sed se večinoma uporablja za zamenjavo besedila v datoteki. Spodnji preprost ukaz sed nadomesti besedo unix z linux v datoteki.
     $sed 's/unix/linux/' geekfile.txt 

    Izhod:

     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. 

    Tukaj s določa operacijo zamenjave. / sta ločila. Unix je iskalni vzorec, linux pa nadomestni niz.

    Privzeto ukaz sed nadomesti prvo pojavitev vzorca v vsaki vrstici in ne bo nadomestil druge, tretje ... pojavitve v vrstici. Zamenjava n-te pojavitve vzorca v vrstici : uporabite zastavice /1, /2 itd., da zamenjate prvo, drugo pojavitev vzorca v vrstici. Spodnji ukaz zamenja drugo pojavitev besede unix z linux v vrstici.

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

    Izhod:

     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. 
    Zamenjava vseh pojavitev vzorca v vrstici : nadomestna zastavica /g (globalna zamenjava) podaja ukaz sed za zamenjavo vseh pojavitev niza v vrstici.
     $sed 's/unix/linux/g' geekfile.txt 

    Izhod:

     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. 
    Zamenjava z n-te pojavitve na vse pojavitve v vrstici: uporabite kombinacijo /1, /2 itd. in /g, da zamenjate vse vzorce iz n-te pojavitve vzorca v vrstici. Naslednji ukaz sed zamenja tretjo, četrto, peto ... besedo unix z besedo linux v vrstici.
     $sed 's/unix/linux/3g' geekfile.txt 

    Izhod:

     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. 
    Oklepaj prvi znak vsake besede : Ta primer sed natisne prvi znak vsake besede v oklepaju.
     $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g' 

    Izhod:

     (W)elcome (T)o (T)he (G)eek (S)tuff 
    Zamenjava niza v določeni številki vrstice : Ukaz sed lahko omejite tako, da zamenja niz v določeni številki vrstice. Primer je
     $sed '3 s/unix/linux/' geekfile.txt 

    Izhod:

     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. 

    Zgornji ukaz sed zamenja niz samo v tretji vrstici. Podvojitev zamenjane vrstice z zastavico /p : Zastavica za tiskanje /p dvakrat natisne zamenjano vrstico na terminalu. Če vrstica nima iskalnega vzorca in ni zamenjana, /p natisne to vrstico samo enkrat.

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

    Izhod:

     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. 
    Tiskanje samo zamenjanih vrstic: uporabite možnost -n skupaj z zastavico za tiskanje /p, da prikažete samo zamenjane vrstice. Tukaj možnost -n prepreči podvojene vrstice, ki jih ustvari zastavica /p, in natisne zamenjane vrstice samo enkrat.
     $sed -n 's/unix/linux/p' geekfile.txt 

    Izhod:

     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. 

    Če uporabite samo -n brez /p, potem sed ne natisne ničesar. Zamenjava niza v obsegu vrstic : podate lahko obseg številk vrstic ukazu sed za zamenjavo niza.

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

    Izhod:

     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. 

    Tu ukaz sed zamenja vrstice z obsegom od 1 do 3. Drug primer je

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

    Izhod:

     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 

    Tukaj $ označuje zadnjo vrstico v datoteki. Tako ukaz sed nadomesti besedilo od druge vrstice do zadnje vrstice v datoteki. Brisanje vrstic iz določene datoteke : Ukaz SED lahko uporabite tudi za brisanje vrstic iz določene datoteke. Ukaz SED se uporablja za izvedbo operacije brisanja, ne da bi sploh odprli datoteko
    Primeri:
    1. Če želite izbrisati določeno vrstico, v tem primeru recite n

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

    2. Za brisanje zadnje vrstice

     Syntax: $ sed '$d' filename.txt 

    3. Za brisanje črte od območja x do y

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

    4. Za brisanje od n-te do zadnje vrstice

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

    5. Za brisanje črte za ujemanje vzorca

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


Ukaz SED v Linuxu | Komplet 2