SISÄLLYS
- Hyödyllisiä SED -komentoja aloittelijoille
- Kuinka SED toimii: Perustieto
- 1. Tekstinsyötön korvaaminen
- 2. Tekstinsyötön korvaaminen tiedostoista
- 3. Tiedostoihin tehtyjen muutosten tallentaminen
- 4. Muutosten tallentaminen alkuperäiseen tiedostoon
- 5. Erottimien poistaminen
- 6. Jokaisen merkkijonon korvaaminen
- 7. Sovitetun merkkijonon käyttäminen
- 8. Laajennettujen säännöllisten lausekkeiden käyttäminen
- 9. Useiden vaihtojen suorittaminen
- 10. Korvaa tapaus herkästi
- 11. Tiettyjen viivojen tulostaminen
- 12. Rivien tulostusalue
- 13. Ei-peräkkäisten viivojen tulostaminen
- 14. Jokaisen rivin tulostaminen
- 15. Tekstin korvaaminen alueella
- 16. Rivien poistaminen syötteestä
- 17. Rivialueen poistaminen syötteestä
- 18. Viimeisen rivin poistaminen
- 19. Kaikkien rivien poistaminen lukuun ottamatta tiettyjä viivoja
- 20. Tyhjien viivojen lisääminen
- 21. Tekstin korvaaminen tietyillä viivoilla
- 22. Merkkijonon n: nnen sanan korvaaminen
- 23. Uusien rivien lisääminen
- 24. Uusien rivien lisääminen
- 25. Tulolinjojen muuttaminen
- 26. Varmuuskopiotiedostojen luominen syöttöä varten
- 27. Rivien tulostaminen kuvioiden perusteella
- 28. SED: n käyttäminen vaihtoehtona GREP: lle
- 29. Tekstin lisääminen tiedostoista
- 30. Muokkausten kirjoittaminen tiedostoihin
- 31. SED -ohjelmatiedostojen käyttäminen
- 32. Monirivisten SED-komentojen käyttäminen
- 33. Linjanumeroiden tulostaminen
- 34. Symlink -päällekirjoituksen estäminen
- 35. Kaikkien käyttäjänimien tulostaminen /etc /passwd
- 36. Kommenttirivien poistaminen syötteestä
- 37. Valkoisten välilyöntien poistaminen syötteestä
- 38. Sivusiirtymien luominen SED: n avulla
- 39. Syöttölinjojen kääntäminen
- 40. Syöttömerkkien kääntäminen
- 41. Syöttölinjojen parien liittäminen
- 42. Tyhjien viivojen lisääminen jokaiseen n: nteen syöttöriviin
- 43. Viimeisten n: nnen rivin tulostaminen
- 44. Tulosta rivit, jotka sisältävät tietyn määrän merkkejä
- 45. Päällekkäisten rivien poistaminen
- 46. Kaikkien tyhjien rivien poistaminen
- 47. Kappaleiden viimeisten rivien poistaminen
- 48. Ohjesivun näyttäminen
- 49. Manuaalisen sivun näyttäminen
- 50. Versiotietojen näyttäminen
- 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.
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.
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.
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
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
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-script32. 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-file34. Symlink -päällekirjoituksen estäminen
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 fruitVoit 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/passwdOlemme 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ä ().
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.txtTä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.txtVoit 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.txt38. 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-fileYksinkertaistamalla tai pienentämällä väliä voit määrittää toisen poikkeaman. Seuraava komento pienentää sivun siirtymää 3 tyhjällä rivillä.
$ sed 's/^/ /' input-file39. 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-fileTämä komento kääntää syöttöriviasiakirjan rivit. Se voidaan tehdä myös vaihtoehtoisella menetelmällä.
$ sed -n '1!G;h;$p' input-file40. 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-fileTä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-file41. 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-fileKäytä tyhjää riviä joka toisella rivillä seuraavasti.
$ sed 'n;G;' input-file43. 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-fileSe 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-fileKäytä alla olevaa komentoa tulostaaksesi rivit, joissa on alle 20 merkkiä.
$ sed -n '/^.{20}/!p' input-fileVoimme tehdä tämän myös yksinkertaisemmin seuraavalla menetelmällä.
$ sed '/^.{20}/d' input-file
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-fileSed 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-fileMolemmat 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.txt48. 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 --helpVoit 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 sed50. 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 --versionYllä 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ää.
Jaa Facebook Viserrys Pinterest WhatsApp ReddIt Sähke Viber
- Tunnisteet
- Järjestelmätyökalut
3 HUOMAUTUKSET
- Sathish 9. kesäkuuta 2020 Klo 16:37
On vaikeuksia ymmärtää säännöllisiä lausekkeita, kuten esimerkissä 35.
Vastaa
Loput ymmärretään.
Tämä on hyödyllistä.
Kiitos jakamisesta, Rubaiat Hossain.
- Rubaiat Hossain 21. kesäkuuta 2020 Klo 21:59
Hei Sathish, Säännöllinen lauseke on aivan eri aihe yksinään. Suosittelen kokeilemaan seuraavia resursseja saadaksesi paremman käsityksen regexistä.
Laske päivät päivämäärästä Excelissähttps://www.regular-expressions.info/
Vastaa
https://regexr.com/- 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.
VastaaJÄ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.
Viimeisin postaus
Android10 parasta kasvojen vaihtosovellusta Android- ja iOS -laitteille
Windows -käyttöjärjestelmäKuinka ajoittaa Windows 10 tyhjentämään roskakorin automaattisesti
Android10 parasta laskutusohjelmaa Android -laitteelle maksettavaksi nopeasti
Windows -käyttöjärjestelmä10 parasta GPU -vertailuohjelmistoa tietokoneellesi
Täytyy lukea
LinuxFail2ban Linuxissa: Internet Security and Utility Tool for Server Admin
LinuxClickUp-Monialustainen projektinhallinta- ja tuottavuusohjelmisto
LinuxQupZillan asentaminen Ubuntuun, Fedoraan, Debianiin, OpenSUSEen
LinuxHyö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