Linux

50 käytännön esimerkkiä SED -komennosta Linuxissa

50 Practical Examples Sed Command Linux

Koti A-Z-komennot 50 käytännön esimerkkiä SED -komennosta Linuxissa LähettäjäMehedi Hasan SisäänA-Z-komennotSuositeltava 801 3

SISÄLLYS

  1. Hyödyllisiä SED -komentoja aloittelijoille
  2. Kuinka SED toimii: Perustieto
    1. 1. Tekstinsyötön korvaaminen
    2. 2. Tekstinsyötön korvaaminen tiedostoista
    3. 3. Tiedostoihin tehtyjen muutosten tallentaminen
    4. 4. Muutosten tallentaminen alkuperäiseen tiedostoon
    5. 5. Erottimien poistaminen
    6. 6. Jokaisen merkkijonon korvaaminen
    7. 7. Sovitetun merkkijonon käyttäminen
    8. 8. Laajennettujen säännöllisten lausekkeiden käyttäminen
    9. 9. Useiden vaihtojen suorittaminen
    10. 10. Korvaa tapaus herkästi
    11. 11. Tiettyjen viivojen tulostaminen
    12. 12. Rivien tulostusalue
    13. 13. Ei-peräkkäisten viivojen tulostaminen
    14. 14. Jokaisen rivin tulostaminen
    15. 15. Tekstin korvaaminen alueella
    16. 16. Rivien poistaminen syötteestä
    17. 17. Rivialueen poistaminen syötteestä
    18. 18. Viimeisen rivin poistaminen
    19. 19. Kaikkien rivien poistaminen lukuun ottamatta tiettyjä viivoja
    20. 20. Tyhjien viivojen lisääminen
    21. 21. Tekstin korvaaminen tietyillä viivoilla
    22. 22. Merkkijonon n: nnen sanan korvaaminen
    23. 23. Uusien rivien lisääminen
    24. 24. Uusien rivien lisääminen
    25. 25. Tulolinjojen muuttaminen
    26. 26. Varmuuskopiotiedostojen luominen syöttöä varten
    27. 27. Rivien tulostaminen kuvioiden perusteella
    28. 28. SED: n käyttäminen vaihtoehtona GREP: lle
    29. 29. Tekstin lisääminen tiedostoista
    30. 30. Muokkausten kirjoittaminen tiedostoihin
    31. 31. SED -ohjelmatiedostojen käyttäminen
    32. 32. Monirivisten SED-komentojen käyttäminen
    33. 33. Linjanumeroiden tulostaminen
    34. 34. Symlink -päällekirjoituksen estäminen
    35. 35. Kaikkien käyttäjänimien tulostaminen /etc /passwd
    36. 36. Kommenttirivien poistaminen syötteestä
    37. 37. Valkoisten välilyöntien poistaminen syötteestä
    38. 38. Sivusiirtymien luominen SED: n avulla
    39. 39. Syöttölinjojen kääntäminen
    40. 40. Syöttömerkkien kääntäminen
    41. 41. Syöttölinjojen parien liittäminen
    42. 42. Tyhjien viivojen lisääminen jokaiseen n: nteen syöttöriviin
    43. 43. Viimeisten n: nnen rivin tulostaminen
    44. 44. Tulosta rivit, jotka sisältävät tietyn määrän merkkejä
    45. 45. Päällekkäisten rivien poistaminen
    46. 46. ​​Kaikkien tyhjien rivien poistaminen
    47. 47. Kappaleiden viimeisten rivien poistaminen
    48. 48. Ohjesivun näyttäminen
    49. 49. Manuaalisen sivun näyttäminen
    50. 50. Versiotietojen näyttäminen
  3. Loppu ajatukset

Riippumatta siitä, oletko järjestelmänvalvoja vai pelkkä harrastaja, sinun on todennäköisesti työskenneltävä tekstiasiakirjojen kanssa usein. Linux, kuten muutkin Unices, tarjoaa joitakin parhaista tekstinkäsittelyohjelmista loppukäyttäjille. Sed-komentorivityökalu on yksi tällainen työkalu, joka tekee tekstinkäsittelystä paljon helpompaa ja tuottavampaa. Jos olet kokenut käyttäjä, sinun pitäisi jo tietää sedistä. Aloittelijat kuitenkin kokevat usein, että sedin oppiminen vaatii ylimääräistä kovaa työtä ja pidättäytyvät siten käyttämästä tätä lumoavaa työkalua. Siksi olemme sitoutuneet luomaan tämän oppaan ja auttamaan heitä oppimaan sedin perusteet mahdollisimman helposti.





Hyödyllisiä SED -komentoja aloittelijoille


Sed on yksi kolmesta laajasti käytetystä Unixin suodatusapuohjelmasta, muut ovat grep ja awk. Olemme jo käsitelleet Linux grep -komennon ja awk -komento aloittelijoille . Tämän oppaan tarkoituksena on koota sed -apuohjelma aloitteleville käyttäjille ja tehdä heistä taitavia tekstinkäsittelyssä Linuxilla ja muilla yksiköillä.

Kuinka SED toimii: Perustieto


Ennen kuin perehdyt esimerkkeihin suoraan, sinun pitäisi ymmärtää ytimekkäästi, miten sed toimii yleensä. Sed on stream -editori, joka on rakennettu päälle ed -apuohjelma . Sen avulla voimme tehdä muokkausmuutoksia tekstidatavirtaan. Vaikka voimme käyttää useita Linux -tekstieditorit editointia varten sed mahdollistaa jotain kätevämpää.





Voit käyttää sediä tekstin muuntamiseen tai olennaisten tietojen suodattamiseen lennossa. Se noudattaa Unixin perusfilosofiaa suorittamalla tämän erityisen tehtävän hyvin. Lisäksi sed pelaa erittäin hyvin tavallisilla Linux -päätelaitteilla ja -komennoilla. Siten se sopii paremmin moniin tehtäviin kuin perinteiset tekstieditorit.

sed toimintaperiaate



Sen ytimessä sed ottaa jonkin verran panosta, suorittaa joitain manipulaatioita ja sylkee tuotoksen. Se ei muuta tuloa, vaan näyttää vain tuloksen vakioulostulossa. Voimme helposti tehdä nämä muutokset pysyviksi joko I/O -uudelleenohjauksella tai muokkaamalla alkuperäistä tiedostoa. Sed -komennon perussyntaksi on esitetty alla.

sed [OPTIONS] INPUT sed 'list of ed commands' filename

Ensimmäinen rivi on sed -käsikirjassa esitetty syntaksi. Toinen on helpompi ymmärtää. Älä huoli, jos et tunne ed -komentoja juuri nyt. Opit ne tästä oppaasta.

1. Tekstinsyötön korvaaminen


Korvaava komento on sedin laajimmin käytetty ominaisuus monille käyttäjille. Sen avulla voimme korvata osan tekstistä muilla tiedoilla. Käytät tätä komentoa usein tekstitietojen käsittelyyn. Se toimii seuraavasti.

$ echo 'Hello world!' | sed 's/world/universe/'

Tämä komento antaa merkkijonon 'Hello Universum!'. Siinä on neljä perusosaa. The 'S' komento merkitsee korvaustoimintoa, /../../ ovat erottimia, ensimmäinen osa erotinten sisällä on kuvio, joka on muutettava, ja viimeinen osa on korvaava merkkijono.

2. Tekstinsyötön korvaaminen tiedostoista


Luodaan ensin tiedosto seuraavalla tavalla.

$ echo 'strawberry fields forever...' >> input-file $ cat input-file

Sanotaan nyt, että haluamme korvata mansikan mustikalla. Voimme tehdä sen käyttämällä seuraavaa yksinkertaista komentoa. Huomaa samankaltaisuudet tämän komennon sed -osan ja yllä olevan välillä.

$ sed 's/strawberry/blueberry/' input-file

Olemme yksinkertaisesti lisänneet tiedostonimen sed -osan jälkeen. Voit myös tulostaa tiedoston sisällön ensin ja sitten muokata tulostusvirtaa sedin avulla, kuten alla on esitetty.

$ cat input-file | sed 's/strawberry/blueberry/'

3. Tiedostoihin tehtyjen muutosten tallentaminen


Kuten olemme jo maininneet, sed ei muuta lähtötietoja lainkaan. Se yksinkertaisesti näyttää muunnetut tiedot vakiolähtöön, joka sattuu olemaan oletuksena Linux -pääte. Voit tarkistaa tämän suorittamalla seuraavan komennon.

$ cat input-file

Tämä näyttää tiedoston alkuperäisen sisällön. Sano kuitenkin, että haluat tehdä muutoksista pysyviä. Voit tehdä tämän useilla tavoilla. Vakiomenetelmä on ohjata sed -tulostasi toiseen tiedostoon. Seuraava komento tallentaa aiemman sed-komennon tuloksen tiedostoon nimeltä output-file.

$ sed 's/strawberry/blueberry/' input-file >> output-file

Voit tarkistaa tämän käyttämällä seuraavaa komentoa.

$ cat output-file

4. Muutosten tallentaminen alkuperäiseen tiedostoon


Entä jos haluat tallentaa sedin tuloksen takaisin alkuperäiseen tiedostoon? Se on mahdollista tehdä käyttämällä -i tai -paikallaan tämän työkalun vaihtoehto. Alla olevat komennot osoittavat tämän käyttämällä sopivia esimerkkejä.

$ sed -i 's/strawberry/blueberry' input-file $ sed --in-place 's/strawberry/blueberry/' input-file

Molemmat yllä olevat komennot ovat vastaavia, ja ne kirjoittavat sedin tekemät muutokset takaisin alkuperäiseen tiedostoon. Jos kuitenkin aiot ohjata lähdön takaisin alkuperäiseen tiedostoon, se ei toimi odotetulla tavalla.

$ sed 's/strawberry/blueberry/' input-file > input-file

Tämä komento tulee ei toimi ja tuloksena on tyhjä syöttötiedosto. Tämä johtuu siitä, että kuori suorittaa uudelleenohjauksen ennen komennon suorittamista.

5. Erottimien poistaminen


Monet tavanomaiset sed -esimerkit käyttävät '/' -merkkiä niiden erottimina. Entä jos haluat korvata merkkijonon, joka sisältää tämän merkin? Alla oleva esimerkki havainnollistaa, kuinka tiedostonimen polku korvataan sedillä. Meidän on poistettava '/' -erottimet käyttämällä vinoviivaa.

$ echo '/usr/local/bin/dummy' >> input-file $ sed 's//usr/local/bin/dummy//usr/bin/dummy/' input-file > output-file

Toinen helppo vältä erottimet on käyttää eri metamerkkiä. Voisimme esimerkiksi käyttää '_' -symbolia '/' sijaan korvauskomennon erottimina. Se on täysin pätevä, koska sed ei velvoita mihinkään erityisiin erotuksiin. '/' -Merkkiä käytetään yleisesti, ei pakollisena.

$ sed 's_/usr/local/bin/dummy_/usr/bin/dummy/_' input-file

6. Jokaisen merkkijonon korvaaminen


Yksi mielenkiintoinen ominaisuus korvaamiskomennolle on, että oletusarvoisesti se korvaa vain yhden merkkijonon jokaisella rivillä.

$ cat <> input-file one two one three two four two three one four EOF

Tämä komento korvaa syöttötiedoston sisällön joissakin satunnaisluvuissa merkkijonomuodossa. Katso nyt alla olevaa komentoa.

$ sed 's/one/ONE/' input-file

Kuten pitäisi nähdä, tämä komento korvaa vain ensimmäisen 'yhden' esiintymisen ensimmäisellä rivillä. Sinun on käytettävä yleistä korvausta, jotta voit korvata kaikki sanan esiintymät sedillä. Lisää vain a 'G' viimeisen rajaajan jälkeen ’S ’.

$ sed 's/one/ONE/g' input-file

Tämä korvaa kaikki sanan 'yksi' esiintymät koko syöttövirrassa.

korvata kaikki mallit sed -komennolla

7. Sovitetun merkkijonon käyttäminen

Joskus käyttäjät saattavat haluta lisätä tiettyjä asioita, kuten sulkeita tai lainauksia tietyn merkkijonon ympärille. Tämä on helppo tehdä, jos tiedät tarkalleen mitä etsit. Entä jos emme tiedä tarkalleen mitä löydämme? Sed -apuohjelma tarjoaa mukavan pienen ominaisuuden tällaisen merkkijonon sovittamiseen.

$ echo 'one two three 123' | sed 's/123/(123)/'

Tässä lisätään sulkeita 123: n ympärille käyttämällä sed -korvauskomentoa. Voimme kuitenkin tehdä tämän mihin tahansa syöttövirran merkkijonoon käyttämällä erityistä metamerkkiä & , kuten seuraavassa esimerkissä havainnollistetaan.

$ echo 'one two three 123' | sed 's/[a-z][a-z]*/(&)/g'

Tämä komento lisää sulkeet kaikkien syötteemme pienten kirjainten ympärille. Jos jätät pois 'G' vaihtoehto tekee sed vain ensimmäisen sanan, ei kaikkien.

8. Laajennettujen säännöllisten lausekkeiden käyttäminen


Yllä olevassa komennossa olemme sovittaneet kaikki pienet sanat käyttämällä säännöllistä lauseketta [a-z] [a-z]*. Se vastaa yhtä tai useampaa pientä kirjainta. Toinen tapa yhdistää ne olisi käyttää metamerkkiä '+' . Tämä on esimerkki laajennetuista säännöllisistä lausekkeista. Sed ei siis tue niitä oletuksena.

$ echo 'one two three 123' | sed 's/[a-z]+/(&)/g'

Tämä komento ei toimi tarkoitetulla tavalla, koska sed ei tue '+' metahahmo laatikosta. Sinun on käytettävä vaihtoehtoja -JA tai -r ottaa käyttöön laajennetut säännölliset lausekkeet sed.

$ echo 'one two three 123' | sed -E 's/[a-z]+/(&)/g' $ echo 'one two three 123' | sed -r 's/[a-z]+/(&)/g'

9. Useiden vaihtojen suorittaminen


Voimme käyttää useampaa kuin yhtä sed -komentoa kerralla erottamalla ne ';' (puolipiste). Tämä on erittäin hyödyllistä, koska sen avulla käyttäjä voi luoda tehokkaampia komentoyhdistelmiä ja vähentää ylimääräistä vaivaa lennossa. Seuraava komento näyttää meille, kuinka korvata kolme merkkijonoa kerralla tällä menetelmällä.

$ echo 'one two three' | sed 's/one/1/; s/two/2/; s/three/3/'

Olemme käyttäneet tätä yksinkertaista esimerkkiä havainnollistamaan kuinka suorittaa useita substituutioita tai muita sed -toimintoja.

10. Korvaa tapaus herkästi


Sed -apuohjelman avulla voimme korvata merkkijonot kirjainkoolla erottamattomalla tavalla. Katsotaanpa ensin, miten sed suorittaa seuraavan yksinkertaisen korvaustoiminnon.

$ echo 'one ONE OnE' | sed 's/one/1/g' # replaces single one

Korvauskomento voi vastata vain yhtä 'yhden' ilmentymää ja korvata sen. Sanotaan kuitenkin, että haluamme sen vastaavan kaikkia yhden esiintymiä tapauksesta riippumatta. Voimme puuttua tähän käyttämällä sed -korvausoperaation i -lippua.

$ echo 'one ONE OnE' | sed 's/one/1/gi' # replaces all ones

11. Tiettyjen viivojen tulostaminen


Voimme tarkastella tiettyä riviä syötteestä käyttämällä 'P' komento. Lisätään lisää tekstiä syöttötiedostoomme ja esitetään tämä esimerkki.

$ echo 'Adding some more text to input file for better demonstration' >> input-file

Suorita nyt seuraava komento nähdäksesi kuinka tulostaa tietty rivi p -näppäimellä.

$ sed '3p; 6p' input-file

Tuloksen tulee sisältää rivinumero kolme ja kuusi kahdesti. Tätä emme odottaneet, eikö? Tämä johtuu siitä, että oletuksena sed lähettää kaikki syöttövirran rivit sekä erityisesti pyydetyt rivit. Jotta voimme tulostaa vain tietyt rivit, meidän on estettävä kaikki muut tulosteet.

$ sed -n '3p; 6p' input-file $ sed --quiet '3p; 6p' input-file $ sed --silent '3p; 6p' input-file

Kaikki nämä sed -komennot ovat samanarvoisia ja tulostavat vain kolmannen ja kuudennen rivin syöttötiedostostamme. Voit siis estää ei -toivotun tulostuksen käyttämällä yhtä -n , -hiljainen tai -hiljainen vaihtoehtoja.

12. Rivien tulostusalue


Alla oleva komento tulostaa joukon rivejä syötetiedostostamme. Symboli ',' voidaan käyttää sedin syöttöalueen määrittämiseen.

$ sed -n '2,4p' input-file $ sed --quiet '2,4p' input-file $ sed --silent '2,4p' input-file

kaikki nämä kolme komentoa ovat myös vastaavia. He tulostavat rivit kaksi tai neljä syötetiedostostamme.

tulostusalue

13. Ei-peräkkäisten viivojen tulostaminen


Oletetaan, että halusit tulostaa tietyt rivit tekstinsyöttösi yhdellä komennolla. Voit käsitellä tällaisia ​​toimintoja kahdella tavalla. Ensimmäinen on liittyä useisiin tulostustoimintoihin käyttämällä ';' erotin.

$ sed -n '1,2p; 5,6p' input-file

Tämä komento tulostaa syöttötiedoston kaksi ensimmäistä riviä ja sen jälkeen kaksi viimeistä riviä. Voit tehdä tämän myös käyttämällä -Ja vaihtoehto sed. Huomaa syntaksin erot.

kuinka lisätä uusi rivi Excel-soluun
$ sed -n -e '1,2p' -e '5,6p' input-file

14. Jokaisen rivin tulostaminen


Oletetaan, että halusimme näyttää joka toinen rivi syötetiedostostamme. Sed -apuohjelma tekee tästä erittäin helpon tarjoamalla tilden '~' operaattori. Katso nopeasti seuraava komento nähdäksesi kuinka tämä toimii.

$ sed -n '1~2p' input-file

Tämä komento toimii tulostamalla tulon ensimmäinen rivi ja sen jälkeen joka toinen rivi. Seuraava komento tulostaa toisen rivin ja sen jälkeen joka kolmannen rivin yksinkertaisen ip -komennon tulostuksesta.

$ ip -4 a | sed -n '2~3p'

15. Tekstin korvaaminen alueella


Voimme myös korvata osan tekstistä vain tietyn alueen sisällä samalla tavalla kuin tulostimme. Alla oleva komento osoittaa, kuinka korvata 'yhdet' 1: llä syötetiedostomme kolmella ensimmäisellä rivillä sedin avulla.

$ sed '1,3 s/one/1/gi' input-file

Tämä komento ei vaikuta muihin. Lisää tähän riviin joitakin rivejä, jotka sisältävät yhden ja yritä tarkistaa se itse.

16. Rivien poistaminen syötteestä


Ed komento 'D' avulla voimme poistaa tiettyjä rivejä tai riviä tekstivirrasta tai syöttötiedostoista. Seuraava komento osoittaa, kuinka ensimmäinen rivi poistetaan sed -tulostuksesta.

$ sed '1d' input-file

Koska sed kirjoittaa vain vakiolähtöön, tämä poisto ei heijasta alkuperäistä tiedostoa. Samaa komentoa voidaan käyttää ensimmäisen rivin poistamiseen monirivisestä tekstivirrasta.

$ ps | sed '1d'

Joten yksinkertaisesti käyttämällä 'D' rivin osoitteen jälkeen, voimme tukahduttaa syötteen sedille.

17. Rivialueen poistaminen syötteestä


On myös erittäin helppo poistaa useita rivejä käyttämällä ',' -operaattoria rinnalla 'D' vaihtoehto. Seuraava sed-komento tukahduttaa syöttötiedostomme kolme ensimmäistä riviä.

$ sed '1,3d' input-file

Voimme myös poistaa ei-peräkkäiset rivit käyttämällä jotakin seuraavista komennoista.

$ sed '1d; 3d; 5d' input-file

Tämä komento näyttää syöttötiedoston toisen, neljännen ja viimeisen rivin. Seuraava komento jättää joitakin mielivaltaisia ​​rivejä yksinkertaisen Linux ip -komennon tulostuksesta.

$ ip -4 a | sed '1d; 3d; 4d; 6d'

18. Viimeisen rivin poistaminen


Sed -apuohjelmassa on yksinkertainen mekanismi, jonka avulla voimme poistaa viimeisen rivin tekstivirrasta tai syöttötiedostosta. Se on '$' symboli ja sitä voidaan käyttää myös muuntyyppisiin toimintoihin poistamisen ohella. Seuraava komento poistaa viimeisen rivin syöttötiedostosta.

$ sed '$d' input-file

Tämä on erittäin hyödyllistä, koska usein saatamme tietää rivien määrän etukäteen. Tämä toimii samalla tavalla putkilinjan tuloille.

$ seq 3 | sed '$d'

19. Kaikkien rivien poistaminen lukuun ottamatta tiettyjä viivoja


Toinen kätevä sed -poiston esimerkki on poistaa kaikki rivit paitsi komennossa määritellyt rivit. Tämä on hyödyllistä suodatettaessa pois olennaiset tiedot tekstivirroista tai muiden tulostuksista Linux -päätelaitteen komennot .

$ free | sed '2!d'

Tämä komento tulostaa vain muistin käytön, joka sattuu olemaan toisella rivillä. Voit tehdä saman myös syöttötiedostoilla, kuten alla on esitetty.

$ sed '1,3!d' input-file

Tämä komento poistaa kaikki rivit paitsi kolme ensimmäistä syöttötiedostosta.

20. Tyhjien viivojen lisääminen


Joskus syöttövirta saattaa olla liian keskittynyt. Voit käyttää sed -apuohjelmaa lisätäksesi tyhjiä rivejä tulon väliin tällaisissa tapauksissa. Seuraava esimerkki lisää tyhjän rivin ps -komennon jokaisen rivin väliin.

$ ps aux | sed 'G'

The 'G' komento lisää tämän tyhjän rivin. Voit lisätä useita tyhjiä rivejä käyttämällä useampaa kuin yhtä 'G' komento sed.

$ sed 'G; G' input-file

Seuraava komento näyttää kuinka tyhjä rivi lisätään tietyn rivinumeron perään. Se lisää tyhjän rivin syöttötiedoston kolmannen rivin jälkeen.

$ sed '3G' input-file

lisää tyhjiä rivejä

21. Tekstin korvaaminen tietyillä viivoilla


Sed -apuohjelman avulla käyttäjät voivat korvata jonkin tekstin tietyllä rivillä. Tästä on hyötyä useissa eri tilanteissa. Oletetaan, että haluamme korvata sanan 'yksi' syöttötiedoston kolmannella rivillä. Voimme käyttää seuraavaa komentoa tähän.

$ sed '3 s/one/1/' input-file

The '3' ennen alkua 'S' komento määrittää, että haluamme korvata vain kolmannella rivillä olevan sanan.

22. Merkkijonon n: nnen sanan korvaaminen


Voimme myös käyttää sed-komentoa korvaamaan tietyn merkkijonon kuvion n: nnen esiintymän. Seuraava esimerkki havainnollistaa tätä käyttämällä yhtä yksirivistä esimerkkiä bashissa.

$ echo 'one one one one one one' | sed 's/one/1/3'

Tämä komento korvaa kolmannen ”yhden” numerolla 1. Tämä toimii samalla tavalla syötetiedostoille. Alla oleva komento korvaa syöttötiedoston toisen rivin viimeiset kaksi.

$ cat input-file | sed '2 s/two/2/2'

Valitsemme ensin toisen rivin ja määritämme sitten, mitä kuvion esiintymistä muutetaan.

23. Uusien rivien lisääminen


Voit helposti lisätä uusia rivejä syöttövirtaan komennon avulla '' . Katso alla oleva yksinkertainen esimerkki, miten tämä toimii.

$ sed 'a new line in input' input-file

Yllä oleva komento lisää merkkijonon 'uusi rivi tulossa' alkuperäisen syöttötiedoston jokaisen rivin jälkeen. Tämä ei kuitenkaan välttämättä ole sitä mitä tarkoitit. Voit lisätä uusia rivejä tietyn rivin jälkeen käyttämällä seuraavaa syntaksia.

$ sed '3 a new line in input' input-file

24. Uusien rivien lisääminen


Voimme myös lisätä rivejä niiden lisäämisen sijaan. Alla oleva komento lisää uuden rivin ennen jokaista syöttöriviä.

$ seq 5 | sed 'i 888'

The 'Minä' -komento aiheuttaa merkkijonon 888 lisäämisen jokaisen rivin tuloksen rivin eteen. Jos haluat lisätä rivin tietyn syöttörivin eteen, käytä seuraavaa syntaksia.

$ seq 5 | sed '3 i 333'

Tämä komento lisää numeron 333 ennen riviä, joka todella sisältää kolme. Nämä ovat yksinkertaisia ​​esimerkkejä rivin lisäyksestä. Voit lisätä merkkijonoja helposti yhdistämällä rivit kuvioiden avulla.

25. Tulolinjojen muuttaminen


Voimme myös muuttaa syöttövirran rivejä suoraan 'C' sed -apuohjelman komento. Tästä on hyötyä, kun tiedät tarkalleen, mikä rivi korvataan ja et halua vastata riviä säännöllisten lausekkeiden avulla. Alla oleva esimerkki muuttaa sekvennin kolmannen rivin.

$ seq 5 | sed '3 c 123'

Se korvaa kolmannen rivin, joka on 3, sisällön numerolla 123. Seuraava esimerkki näyttää meille, kuinka syöttötiedoston viimeinen rivi muutetaan 'C' .

$ sed '$ c CHANGED STRING' input-file

Voimme myös käyttää säännöllistä lauseketta muutettavan rivinumeron valitsemiseksi. Seuraava esimerkki havainnollistaa tätä.

$ sed '/demo*/ c CHANGED TEXT' input-file

26. Varmuuskopiotiedostojen luominen syöttöä varten


Jos haluat muuttaa tekstiä ja tallentaa muutokset takaisin alkuperäiseen tiedostoon, suosittelemme, että luot varmuuskopiotiedostot ennen jatkamista. Seuraava komento suorittaa joitain sed-toimintoja syöttötiedostollamme ja tallentaa sen alkuperäisenä. Lisäksi se luo varmuuskopion nimeltä input-file.old varotoimenpiteenä.

$ sed -i.old 's/one/1/g; s/two/2/g; s/three/3/g' input-file

The -i -vaihtoehto kirjoittaa sedin tekemät muutokset alkuperäiseen tiedostoon. .Old-pääteosa vastaa input-file.old-asiakirjan luomisesta.

27. Rivien tulostaminen kuvioiden perusteella


Sanotaan, että haluamme tulostaa kaikki rivit syötteestä tietyn mallin perusteella. Tämä on melko helppoa, kun yhdistämme sed -komennot 'P' kanssa -n vaihtoehto. Seuraava esimerkki havainnollistaa tätä syöttötiedoston avulla.

$ sed -n '/^for/ p' input-file

Tämä komento etsii mallia 'for' jokaisen rivin alussa ja tulostaa vain rivit, jotka alkavat sillä. The '^' merkki on erityinen säännöllisen ilmaisun merkki, joka tunnetaan ankkurina. Se määrittää, että kuvion tulisi sijaita rivin alussa.

28. SED: n käyttäminen vaihtoehtona GREP: lle


Grep -komento Linuxissa etsii tiettyä mallia tiedostosta ja, jos se löytyy, näyttää rivin. Voimme jäljitellä tätä käyttäytymistä sed -apuohjelman avulla. Seuraava komento havainnollistaa tätä yksinkertaisella esimerkillä.

$ sed -n 's/strawberry/&/p' /usr/share/dict/american-english

Tämä komento etsii sanan mansikka Amerikan englanti sanakirjatiedosto. Se toimii etsimällä mansikkakuviota ja käyttää sitten sopivaa merkkijonoa 'P' komento tulostaa se. The -n lippu tukahduttaa kaikki muut rivit tulostuksessa. Voimme tehdä tästä komennosta yksinkertaisemman käyttämällä seuraavaa syntaksia.

$ sed -n '/strawberry/p' /usr/share/dict/american-english

grep vaihtoehto käyttämällä sed -komentoa

29. Tekstin lisääminen tiedostoista


The 'R' sed -apuohjelman komennon avulla voimme lisätä syötteeseen tiedostosta luetun tekstin. Seuraava komento luo syöttövirran sedille käyttämällä komentoa seq ja liittää syöttötiedoston sisältämät tekstit tähän virtaan.

$ seq 5 | sed 'r input-file'

Tämä komento lisää syöttötiedoston sisällön jokaisen peräkkäisen syöttöjakson jälkeen, jonka on tuottanut sekvenssi. Käytä seuraavaa komentoa lisätäksesi sisällön sekvenssin luomien numeroiden perään.

$ seq 5 | sed '$ r input-file'

Voit käyttää seuraavaa komentoa lisätäksesi sisällön n: nnen syöttörivin jälkeen.

$ seq 5 | sed '3 r input-file'

30. Muokkausten kirjoittaminen tiedostoihin


Oletetaan, että meillä on tekstitiedosto, joka sisältää luettelon verkko -osoitteista. Sano, että jotkut niistä alkavat osoitteella www, toiset https ja toiset http. Voimme muuttaa kaikki osoitteet, jotka alkavat www: llä, alkamaan https: llä ja tallentaa vain ne, jotka on muutettu kokonaan uuteen tiedostoon.

$ sed 's/www/https/ w modified-websites' websites

Jos nyt tarkistat muokattujen verkkosivustojen sisällön, löydät vain sedin muuttamat osoitteet. The 'W tiedostonimi '-Vaihtoehto saa sedin kirjoittamaan muutokset määritettyyn tiedostonimeen. Se on hyödyllinen, kun käsittelet suuria tiedostoja ja haluat tallentaa muokatut tiedot erikseen.

31. SED -ohjelmatiedostojen käyttäminen


Joskus saatat joutua suorittamaan useita sed -toimintoja tietyllä syöttöjoukolla. Tällaisissa tapauksissa on parempi kirjoittaa ohjelmatiedosto, joka sisältää kaikki eri sed -komentosarjat. Voit sitten yksinkertaisesti kutsua tämän ohjelmatiedoston käyttämällä -f sed -apuohjelman vaihtoehto.

$ cat <> sed-script s/a/A/g s/e/E/g s/i/I/g s/o/O/g s/u/U/g EOF

Tämä sed -ohjelma muuttaa kaikki pienet vokaalit isoiksi. Voit suorittaa tämän käyttämällä alla olevaa syntaksia.

$ sed -f sed-script input-file $ sed --file=sed-script  

32. Monirivisten SED-komentojen käyttäminen


Jos kirjoitat suuren sed -ohjelman, joka kattaa useita rivejä, sinun on lainattava ne oikein. Syntaksi eroaa hieman eri Linux -kuorien välillä. Onneksi se on hyvin yksinkertainen Bourne -kuorelle ja sen johdannaisille (bash).

$ sed ' s/a/A/g s/e/E/g s/i/I/g s/o/O/g s/u/U/g'  

Joissakin kuorissa, kuten C -kuvassa (csh), sinun on suojattava lainausmerkkejä käyttämällä käänteisviivaa ().

$ sed 's/a/A/g  s/e/E/g  s/i/I/g  s/o/O/g  s/u/U/g'  

33. Linjanumeroiden tulostaminen


Jos haluat tulostaa tietyn merkkijonon sisältävän rivinumeron, voit etsiä sen kuvion avulla ja tulostaa sen erittäin helposti. Tätä varten sinun on käytettävä '=' sed -apuohjelman komento.

$ sed -n '/ion*/ ='  

Tämä komento etsii annettua mallia syöttötiedostosta ja tulostaa sen rivinumeron vakiolähtöön. Voit myös ratkaista tämän käyttämällä grepin ja awkin yhdistelmää.

$ cat -n input-file | grep 'ion*' | awk '{print }'

Voit tulostaa syöttämäsi rivien kokonaismäärän seuraavan komennon avulla.

$ sed -n '$=' input-file

Sed 'Minä' tai '-paikallaan '-Komento korvaa usein kaikki järjestelmälinkit tavallisilla tiedostoilla. Tämä on monissa tapauksissa ei -toivottu tilanne, joten käyttäjät saattavat haluta estää tämän tapahtuvan. Onneksi sed tarjoaa yksinkertaisen komentorivivaihtoehdon symbolisen linkin korvaamisen poistamiseksi käytöstä.

$ echo 'apple' > fruit $ ln --symbolic fruit fruit-link $ sed --in-place --follow-symlinks 's/apple/banana/' fruit-link $ cat fruit

Voit siis estää symbolisen linkin korvaamisen käyttämällä -seuraa-linkkejä sed -apuohjelman vaihtoehto. Tällä tavalla voit säilyttää symbolilinkit tekstinkäsittelyn aikana.

35. Kaikkien käyttäjänimien tulostaminen /etc /passwd


The /etc/passwd tiedosto sisältää järjestelmän laajuiset tiedot kaikista Linux-käyttäjätilistä. Voimme saada luettelon kaikista tässä tiedostossa käytettävissä olevista käyttäjätunnuksista käyttämällä yksinkertaista yhden linjan sed-ohjelmaa. Katso alla oleva esimerkki tarkasti, miten tämä toimii.

$ sed 's/([^:]*).*/1/' /etc/passwd

Olemme käyttäneet säännöllistä lausekemallia saadaksemme ensimmäisen kentän tästä tiedostosta samalla kun hylkäämme kaikki muut tiedot. Tässä käyttäjätunnukset sijaitsevat /etc/passwd tiedosto.

36. Kommenttirivien poistaminen syötteestä


Monissa järjestelmätyökaluissa ja kolmannen osapuolen sovelluksissa on kokoonpanotiedostot. Nämä tiedostot sisältävät yleensä paljon kommentteja, joissa kuvataan parametrit yksityiskohtaisesti. Joskus saatat kuitenkin haluta näyttää vain kokoonpanovaihtoehdot pitäen alkuperäiset kommentit paikallaan.

$ cat ~/.bashrc | sed -e 's/#.*//;/^$/d'

Tämä komento poistaa kommentoidut rivit bash -määritystiedostosta. Kommentit on merkitty käyttämällä#-merkkiä. Joten olemme poistaneet kaikki tällaiset rivit käyttämällä yksinkertaista regex -mallia. Jos kommentit on merkitty eri symbolilla, korvaa yllä olevan kuvion '#' kyseisellä symbolilla.

$ cat ~/.vimrc | sed -e 's/'.*//;/^$/d'

Tämä poistaa kommentit vim -määritystiedostosta, joka alkaa lainausmerkillä ().

poista kommentit

37. Valkoisten välilyöntien poistaminen syötteestä


Monet tekstiasiakirjat ovat täynnä tarpeettomia välilyöntejä. Usein ne ovat seurausta huonosta muotoilusta ja voivat sotkea asiakirjoja. Onneksi sed sallii käyttäjien poistaa nämä ei -toivotut välit melko helposti. Seuraavan komennon avulla voit poistaa johtavat välilyönnit syöttövirrasta.

$ sed 's/^[ 	]*//' whitespace.txt

Tämä komento poistaa kaikki johtavat välilyönnit tiedostosta whitespace.txt. Jos haluat poistaa tyhjät välilyönnit, käytä seuraavaa komentoa.

$ sed 's/[ 	]*$//' whitespace.txt

Voit myös käyttää sed -komentoa sekä eteen- että taakse jäävien välilyöntien poistamiseen samanaikaisesti. Alla olevaa komentoa voidaan käyttää tämän tehtävän suorittamiseen.

$ sed 's/^[ 	]*//;s/[ 	]*$//' whitespace.txt

38. Sivusiirtymien luominen SED: n avulla


Jos sinulla on suuri tiedosto, jossa ei ole etupehmusteita, voit halutessasi luoda sille sivusiirtymiä. Sivusiirrot ovat yksinkertaisesti johtavia välilyöntejä, jotka auttavat meitä lukemaan syöttörivit vaivattomasti. Seuraava komento luo 5 tyhjän tilan siirtymän.

$ sed 's/^/ /' input-file

Yksinkertaistamalla tai pienentämällä väliä voit määrittää toisen poikkeaman. Seuraava komento pienentää sivun siirtymää 3 tyhjällä rivillä.

$ sed 's/^/ /' input-file

39. Syöttölinjojen kääntäminen


Seuraava komento näyttää meille, kuinka käyttää sediä syöttötiedoston rivien järjestyksen muuttamiseen. Se jäljittelee Linuxin käyttäytymistä tac komento.

$ sed '1!G;h;$!d' input-file

Tämä komento kääntää syöttöriviasiakirjan rivit. Se voidaan tehdä myös vaihtoehtoisella menetelmällä.

$ sed -n '1!G;h;$p' input-file

40. Syöttömerkkien kääntäminen


Voimme myös käyttää sed -apuohjelmaa syöttörivien merkkien kääntämiseen. Tämä muuttaa syöttövirran jokaisen peräkkäisen merkin järjestyksen.

$ sed '/
/!G;s/(.)(.*
)/&21/;//D;s/.//' input-file

Tämä komento jäljittelee Linuxin käyttäytymistä rev komento. Voit tarkistaa tämän suorittamalla alla olevan komennon edellä mainitun jälkeen.

$ rev input-file

41. Syöttölinjojen parien liittäminen


Seuraava yksinkertainen sed -komento yhdistää kaksi peräkkäistä syöttötiedoston riviä yhdeksi riviksi. Se on hyödyllinen, jos sinulla on suuri teksti, joka sisältää jaettuja rivejä.

$ sed '$!N;s/
/ /' input-file $ tail -15 /usr/share/dict/american-english | sed '$!N;s/
/ /'

Siitä on hyötyä useissa tekstinkäsittelytehtävissä.

42. Tyhjien viivojen lisääminen jokaiseen n: nteen syöttöriviin


Voit lisätä tyhjän rivin syötetiedoston jokaiselle n: lle riville erittäin helposti sedin avulla. Seuraavat komennot lisäävät tyhjän rivin joka kolmas syöttötiedoston rivi.

$ sed 'n;n;G;' input-file

Käytä tyhjää riviä joka toisella rivillä seuraavasti.

$ sed 'n;G;' input-file

43. Viimeisten n: nnen rivin tulostaminen


Aiemmin olemme käyttäneet sed -komentoja tulosteiden tulostamiseen rivinumeron, alueiden ja kuvion perusteella. Voimme myös käyttää sediä jäljittelemään pään tai hännän komentojen käyttäytymistä. Seuraava esimerkki tulostaa syöttötiedoston 3 viimeistä riviä.

$ sed -e :a -e '$q;N;4,$D;ba' input-file

Se on samanlainen kuin alla oleva tail -komentotail -3 -syöttötiedosto.

44. Tulosta rivit, jotka sisältävät tietyn määrän merkkejä


Rivien tulostaminen merkkien määrän perusteella on erittäin helppoa. Seuraava yksinkertainen komento tulostaa rivit, joissa on vähintään 15 merkkiä.

$ sed -n '/^.{15}/p' input-file

Käytä alla olevaa komentoa tulostaaksesi rivit, joissa on alle 20 merkkiä.

$ sed -n '/^.{20}/!p' input-file

Voimme tehdä tämän myös yksinkertaisemmin seuraavalla menetelmällä.

$ sed '/^.{20}/d' input-file

tulosta rivit merkkien perusteella

45. Päällekkäisten rivien poistaminen


Seuraava esimerkki näyttää jäljittelevän Linuxin käyttäytymistä uniq komento. Se poistaa kaikki kaksi peräkkäistä päällekkäistä riviä syötteestä.

$ sed '$!N; /^(.*)
1$/!P; D' input-file

Sed ei kuitenkaan voi poistaa kaikkia päällekkäisiä rivejä, jos tuloa ei ole lajiteltu. Vaikka voit lajitella tekstin lajittelukomennon avulla ja liittää sitten ulostulon sediin putken avulla, se muuttaa rivien suuntaa.

46. ​​Kaikkien tyhjien rivien poistaminen


Jos tekstitiedosto sisältää paljon tarpeettomia tyhjiä rivejä, voit poistaa ne sed -apuohjelmalla. Alla oleva komento osoittaa tämän.

$ sed '/^$/d' input-file $ sed '/./!d' input-file

Molemmat komennot poistavat kaikki tyhjät rivit, jotka ovat määritetyssä tiedostossa.

47. Kappaleiden viimeisten rivien poistaminen


Voit poistaa kaikkien kappaleiden viimeisen rivin käyttämällä seuraavaa sed -komentoa. Käytämme tässä esimerkissä tyhjää tiedostonimeä. Korvaa tämä varsinaisen tiedoston nimellä, joka sisältää joitain kappaleita.

$ sed -n '/^$/{p;h;};/./{x;/./p;}' paragraphs.txt

48. Ohjesivun näyttäminen


Ohjesivu sisältää yhteenvedon kaikista sed -ohjelman käytettävissä olevista vaihtoehdoista ja käytöstä. Voit kutsua tämän käyttämällä seuraavaa syntaksia.

$ sed -h $ sed --help

Voit käyttää mitä tahansa näistä kahdesta komennosta löytääksesi mukavan ja kompaktin yleiskatsauksen sed -apuohjelmasta.

49. Manuaalisen sivun näyttäminen


Käyttöoppaassa on perusteellinen keskustelu sedistä, sen käytöstä ja kaikista käytettävissä olevista vaihtoehdoista. Sinun tulee lukea tämä huolellisesti ymmärtääksesi selkeästi.

$ man sed

50. Versiotietojen näyttäminen


The -versio sed -vaihtoehdon avulla voimme nähdä, mikä sed -versio on asennettu koneeseemme. Siitä on hyötyä virheiden vianetsinnässä ja virheiden raportoinnissa.

$ sed --version

Yllä oleva komento näyttää järjestelmän sed -apuohjelman versiotiedot.

Loppu ajatukset


Sed -komento on yksi yleisimmin käytetyistä Linuxin jakelujen tarjoamista tekstinkäsittelyvälineistä. Se on yksi kolmesta Unixin ensisijaisesta suodatusapuohjelmasta grepin ja awkin rinnalla. Olemme hahmottaneet 50 yksinkertaista mutta hyödyllistä esimerkkiä, joiden avulla lukijat voivat aloittaa tämän hämmästyttävän työkalun käytön. Suosittelemme käyttäjiä kokeilemaan näitä komentoja itse saadakseen käytännön tietoa. Kokeile lisäksi säätää tässä oppaassa annettuja esimerkkejä ja tutkia niiden vaikutusta. Se auttaa hallitsemaan sed nopeasti. Toivottavasti olet oppinut sedin perusteet selvästi. Älä unohda kommentoida alla, jos sinulla on kysyttävää.

  • Tunnisteet
  • Järjestelmätyökalut
Jaa Facebook Viserrys Pinterest WhatsApp ReddIt Sähke Viber

    3 HUOMAUTUKSET

    1. Sathish 9. kesäkuuta 2020 Klo 16:37

      On vaikeuksia ymmärtää säännöllisiä lausekkeita, kuten esimerkissä 35.
      Loput ymmärretään.
      Tämä on hyödyllistä.
      Kiitos jakamisesta, Rubaiat Hossain.

      Vastaa
    2. Leonard 4. kesäkuuta 2020 Klo 14:23

      Haluan kiittää sinua siitä, että olet poistanut monet sekaannukseni sedistä. Laitan tämän kirjanmerkkeihin tulevia viitteitä varten.

      Vastaa

    JÄTÄ VASTAUS Peruuta vastaus

    Kommentti: Kirjoita kommenttisi! Nimi:* Kirjoita nimesi tähän Sähköposti:* Olet antanut virheellisen sähköpostiosoitteen! Kirjoita sähköpostiosoitteesi tähän Verkkosivusto:

    Tallenna nimeni, sähköpostiosoitteeni ja verkkosivustoni tähän selaimeen, kun seuraavan kerran kommentoin.

    spot_img

    Viimeisin postaus

    Android

    10 parasta kasvojen vaihtosovellusta Android- ja iOS -laitteille

    Windows -käyttöjärjestelmä

    Kuinka ajoittaa Windows 10 tyhjentämään roskakorin automaattisesti

    Android

    10 parasta laskutusohjelmaa Android -laitteelle maksettavaksi nopeasti

    Windows -käyttöjärjestelmä

    10 parasta GPU -vertailuohjelmistoa tietokoneellesi

    Täytyy lukea

    Linux

    Fail2ban Linuxissa: Internet Security and Utility Tool for Server Admin

    Linux

    ClickUp-Monialustainen projektinhallinta- ja tuottavuusohjelmisto

    Linux

    QupZillan asentaminen Ubuntuun, Fedoraan, Debianiin, OpenSUSEen

    Linux

    Hyödyllisiä Linux -päätelaitteiden pikanäppäimiä, jotka jokaisen Power Linux -käyttäjän on tiedettävä

    Liittyvä postaus

    Ohjaamon verkkokonsolin asentaminen ja asentaminen Linux -järjestelmään

    Yii PHP -kehyksen asentaminen ja asentaminen Ubuntu Linuxiin

    W: n korjaaminen: Joidenkin hakemistotiedostojen lataaminen epäonnistui Virhe Ubuntu Linuxissa

    1Passwordin asentaminen ja asentaminen Linux -työpöydälle

    Uusimman GNU Nano -tekstieditorin asentaminen Linux -työpöydälle

    Kuinka asentaa uusi Relic Infrastructure Agent Linux -järjestelmään



    ^