Ero sivun ”Sed” versioiden välillä
(→Aiheesta muualla: Pari opasta lisää) |
(y/// ja s###) |
||
Rivi 6: | Rivi 6: | ||
Sed kykenee muokkaamaan myös tiedostoja | Sed kykenee muokkaamaan myös tiedostoja | ||
sed -i <muokattava-tiedosto> | sed -i <muokattava-tiedosto> | ||
===Sedin ohjaaminen=== | ===Sedin ohjaaminen=== | ||
Sed vastaanottaa muokkaustemplaatin joko tiedostona | Sed vastaanottaa muokkaustemplaatin joko tiedostona | ||
sed -f <skriptitiedosto> | sed -f <skriptitiedosto> | ||
tai komentoriviargumenttina | tai komentoriviargumenttina | ||
sed -e '<sed-lauseke>' | sed '<sed-lauseke>' | ||
Lausekkeita voi suoritusnopeutta ajatellen ketjuttaa ohjelman useamman käynnistämisen välttämiseksi | |||
sed '<sed-lauseke>' -e '<sed-lauseke>' | |||
===Sed-lausekkeet=== | ===Sed-lausekkeet=== | ||
Tyypillisin sed-lauseke lienee epäilemättä | Tyypillisin sed-lauseke lienee epäilemättä | ||
s/<korvattava lauseke>/<korvaava lauseke>/g | s/<korvattava lauseke>/<korvaava lauseke>/g | ||
Sedissa s/// siis korvaa yksittäisia [[wikipedia:fi:merkkijono|osamerkkijonoja]] toisilla, g perässä kertoo, että kaikki vastaavuudet korvataan, eikä vain rivin ensimmäistä. | Sedissa s/// siis korvaa yksittäisia [[wikipedia:fi:merkkijono|osamerkkijonoja]] toisilla, g perässä kertoo, että kaikki vastaavuudet korvataan, eikä vain rivin ensimmäistä. Tätä samaa korvaussyntaksia käyttää mm. [[vim]]. | ||
Käsiteltäessä vaikkapa hakemistopolkuja voidaan välimerkki valita toisin | |||
s#/root/tmp#/tmp#g | |||
Korvaamisen lisäksi syötteelle voidaan tehdä [[tr]]-komentoa mukaileva käännös, joka muuntaa yksittäisiä merkkejä | |||
echo 'kaarteessa kahlaajat' | sed 'y/a/i/' | |||
Tulosteeksi tulisi "kiirteessi kihliijit". | |||
===Esimerkkejä=== | ===Esimerkkejä=== |
Versio 7. lokakuuta 2013 kello 19.33
Sed eli Stream Editor on tiedostojen ja syötevirtojen yksinkertaiseen automaattiseen muokkaamiseen tarkoitettu ohjelma ja tavallaan myös kieli. Kuten useimmista muistakin peruskomentorivityökaluista, tästäkin on useita toteutuksia.
Käyttö
Tyypillisin käyttötapa on komentotulkin putkitusominaisuutta käytettävä muoto
<tulostava komentolauseke> | sed -e "<sed-lauseke>"
Sed kykenee muokkaamaan myös tiedostoja
sed -i <muokattava-tiedosto>
Sedin ohjaaminen
Sed vastaanottaa muokkaustemplaatin joko tiedostona
sed -f <skriptitiedosto>
tai komentoriviargumenttina
sed '<sed-lauseke>'
Lausekkeita voi suoritusnopeutta ajatellen ketjuttaa ohjelman useamman käynnistämisen välttämiseksi
sed '<sed-lauseke>' -e '<sed-lauseke>'
Sed-lausekkeet
Tyypillisin sed-lauseke lienee epäilemättä
s/<korvattava lauseke>/<korvaava lauseke>/g
Sedissa s/// siis korvaa yksittäisia osamerkkijonoja toisilla, g perässä kertoo, että kaikki vastaavuudet korvataan, eikä vain rivin ensimmäistä. Tätä samaa korvaussyntaksia käyttää mm. vim.
Käsiteltäessä vaikkapa hakemistopolkuja voidaan välimerkki valita toisin
s#/root/tmp#/tmp#g
Korvaamisen lisäksi syötteelle voidaan tehdä tr-komentoa mukaileva käännös, joka muuntaa yksittäisiä merkkejä
echo 'kaarteessa kahlaajat' | sed 'y/a/i/'
Tulosteeksi tulisi "kiirteessi kihliijit".
Esimerkkejä
echo ababaabcd | sed -e 's/\(ab\)*//'
tulostaa "abaabcd". Vastaavasti g:n kanssa
echo ababaabcd | sed -e 's/\(ab\)*//g'
tulostaa "acd", tässä * on kuitenkin turha, koska g vastaa saman lausekkeen mielivaltaisen monta kertaa.
sed -i 's/vanha/uusi/' *.py
vaihtaa sanan "vanha" sanaan "uusi" kaikissa kyseisen hakemiston py-tiedostoissa