Sed

Linux.fista
Versio hetkellä 7. lokakuuta 2013 kello 19.33 – tehnyt 212.149.176.164 (keskustelu) (y/// ja s###)
Siirry navigaatioon Siirry hakuun

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

Katso myös

Aiheesta muualla