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 .