Sed Korvaa rivinvaihto välilyönnillä

Sed Korvaa Rivinvaihto Valilyonnilla



UNIX-/Linux-käyttöjärjestelmässä sed-komento on omistettu työkalu virtojen muokkaamiseen. Se voi suorittaa tekstivirralle erilaisia ​​toimintoja, kuten etsimisen, etsimisen ja korvaamisen sekä lisäämisen/poistamisen. Useimmiten kuitenkin sediä käytetään tekstisisällön etsimiseen ja korvaamiseen.

Tässä oppaassa esittelemme uusien rivien korvaamista välilyönnillä käyttämällä sed.

Käytä sediä tekstin korvaamiseen

Aluksi tarkastellaan nopeasti perushaun suorittamista ja korvaamista sed:llä. Samaa menetelmää käytetään korvattaessa rivinvaihdot välilyönneillä joillakin lisävaihtoehdoilla. Komentorakenne on seuraava:







$ sed -e 's///'

Katso seuraava komento:



$ echo 'nopea ruskea kettu' | sed -e 's/quick/fast/g'



Kaiku-komento tulostaa merkkijonon kohteeseen STDOUT . STDOUT-virta on silloin putkitettu sed. Olemme ohjeistaneet sediä korvaamaan kaikki nopeasti korvattava esiintymät nopeasti. Lopuksi tulos tulostetaan näytölle.





Uusien rivien korvaaminen välilyönnillä

Esittelyä varten olen luonut seuraavan tekstitiedoston test.txt, jossa on useita valesisältöjä:

$ kissa testi.txt



sed-komento hyväksyy säännölliset lausekkeet erilaisten kuvioiden kuvaamiseen. Hyödyntämällä tätä ominaisuutta, aiomme kuvata rivinvaihdon muodossa \n. Yritetään korvata rivinvaihdot välilyönnillä:

$ sed -e 's/\n/ /g' test.txt

Se ei kuitenkaan toiminut odotetusti. Tämän tavoitteen saavuttamiseksi tarvitsemme joitain lisävaihtoehtoja. Katso seuraava komento:

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

sed-komennolla on useita osioita; jokainen tarkoittaa tiettyä tehtävää:

  • :a: Luo tunnisteen 'a'
  • N: Liittää seuraavan rivin kuviotilaan
  • $!ba: Jos ei viimeinen rivi, palaa tunnisteeseen 'a'
  • s/\n/ /g: Etsii ja korvaa rivinvaihdon (\n) välilyönnillä (/ /). Kuvio vastaa maailmanlaajuisesti (/g)

Sed-komento kiertää vaiheita, kunnes se saavuttaa viimeisen rivin ja korvaa kaikki \n merkit välilyönnillä.

Tämän monimutkaisen komennon sijaan voimme yksinkertaistaa asioita käyttämällä -z-lippua, joka määrittää sed:n toimimaan nollalla erotettujen tietueiden kanssa. Komento näyttäisi tältä:

$ sed -z -e 's/\n/ /g' test.txt

Vaihtoehtoiset menetelmät

Vaikka sed voi tehdä tehtävän hienosti, on olemassa joitain vaihtoehtoisia työkaluja. Tässä osiossa tarkastelemme lyhyesti muutamaa niistä.

Seuraavassa esimerkissä voimme käyttää tr-komentoa korvaamaan rivinvaihto välilyönnillä yksinkertaisella tavalla:

$ tr '\n' ' ' < testi.txt

Voimme myös käyttää perliä työn tekemiseen. Seuraava syntaksi on myös samanlainen kuin mitä käytimme sed:n kanssa (mutta yksinkertaistettu):

$ perl -p -e 's/\n/ /' test.txt

Toinen tapa korvata rivinvaihto välilyönnillä on käyttää liitä-komentoa. Huomaa, että se voi poistaa vain yhden merkin:

$ paste -s -d ' ' testi.txt

Kuten sed, Linuxin mukana tulee toinen työkalu awk. Samoin kuin sed, se voi myös suorittaa joitain edistyneitä korvauksia tulolle. Käytä tarkoitukseemme seuraavaa awk-komentoa:

$ awk 1 ORS=' ' testi.txt

Johtopäätös

Tämä opas tutki, kuinka voimme korvata rivinvaihdon välilyönnillä käyttämällä sed. Se saavutettiin kahdella eri tavalla. Tämä opas sisältää myös muita asiaankuuluvia työkaluja, joilla voimme korvata rivinvaihdon välilyönnillä.

Sen sijaan, että käyttäisimme monimutkaisia ​​komentoja, joita on vaikea muistaa, käytämme Bash-komentosarjaa suorittamaan monia asioita Linuxissa. Vaikka se maksaa jonkin verran suorituskykyä, joustavuus ja käytettävyys ovat sen arvoisia. Lisätietoja: Bash-skriptit aloittelijoille .