sed(7) sed(7)
sed - tekstivirtamuokkain (the stream editor)
sed [-n] [-e skripti ] [-f skriptitiedosto ] [ tiedosto ] ...
Sed kopioi tiedoston (oletuksena vakiosyte) vakiotulosteeseen muokaten
sit annettujen komentojen mukaisesti.
Valitsin -e ottaa yhden muokkauskomennon seuraavasta parametrist.
Useiden komentojen tapauksessa ne suoritetaan esiintymisjrjestyksess.
Valitsinta -e ei tarvita, jos komentoja on vain yksi ja -f -valitsinta
ei kytet.
Valitsin -f hakee komennot tiedostosta "skriptitiedosto". Useiden
tiedostojen tapauksessa komennot suoritetaan esiintymisjrjestyksess.
Valitsimet -e ja -f voivat esiinty mys yhdess.
Valitsin -n est vakiotulosteen.
Skripti koostuu komennoista, jokainen omalla rivilln seuraavassa muo-
dossa:
[osoite [, osoite] ] funktio [parametrit]
Yhden kierroksen aikana sed kopioi rivin sytteest puskuriin, suorittaa
skripteist ne komennot, joiden osoite sopii puskuriin ja lopuksi kopioi
puskurin vakiotulosteeseen ja tyhjent puskurin.
Valitsin -n est normaalin tulostuksen (niin, ett ainoastaan p- ja w-
komentojen tulostukset psevt lpi). n- ja N-komennot lukevat itse rivej
muualta ja d- ja D-komennot aiheuttavat skriptin muiden komentojen ohi-
tuksen. (D-komento lisksi est tyhjentmst tmnhetkist tekstipuskuria,
joka normaalisti tapahtuisi ennen seuraavan kierroksen aloittamista).
On hydyllist tiet, ett sed kytt mys toista puskuria (sit kutsutaan
`pitopaikaksi', hold space englanniksi), joka voidaan kopioida tai
liitt tmnhetkiseen tekstipuskuriin, mys puskurien vaihtaminen onnistuu.
Osoite voi olla desimaalinumero (jolloin se tarkoittaa rivinumeroa,
jossa rivinumerointi alkaa yhdest ja juoksee kumulatiivisesti tiedoston
lpi), tai, `$' joka osoittaa sytteen viimeiseen riviin, tai `/snnllinen
lauseke/', jota haetaan, ed (1)-tyylisesti, mutta muokattuna nin:
(1) Merkkijono `\n' tarkoittaa rivinvaihtoa, joka lytyy puskurista ja
`\t' tarkoittaa sarkainta.
(2) Komentorivi ilman osoitetta valitsee jokaisen puskurin.
(3) Komentorivi, jolla on yksi osoite, valitsee kaikki puskurit, jotka
sopivat osoitteeseen.
(4) Komentorivi, jolla on kaksi osoitetta, valitsee alueen osoitteiden
vlist. (Jos jlkimminen osoite on rivinumero ja on pienempi tai
yhtsuuri kuin ensimminen, vain yksi rivi valitaan.) Kun jlkimminen
osoite on lytynyt, sed aloittaa uudelleen etsimn ensimmist
osoitetta. Nit alueita voi olla useita.
Knteisoperaattori '!' voi edelt komentoa, jolloin osoitteet, joita ei
valittu osoitteiden perusteella, ovat komennon kohteena.
Alla olevassa funktioiden listassa sallittujen osoitteiden mrn ylraja
jokaiselle funktiolle on ilmoitettu sulkujen sisll.
"teksti"-parametrit sisltvt yhden tai useamman rivillisen teksti. Jos
viimeisen merkkin rivill on kenoviiva, jatketaan teksti-parametrin
lukemista seuraavalla rivill, muulloin aletaan etsi seuraavaa komentoa.
Laita komennon pern ainoastaan yksi kenoviiva.
Tekstiss kenoviivoja kytetn suojelemaan seuraavaa merkki (sarkaimet ja
rivinvaihtomerkit jne.), jotta komentotulkki ymmrt oikein skripteist
lytyvt erikoismerkit.
Parametrien, joita merkitn "ltiedosto" (luku) tai "ktiedosto" (kirjoi-
tus), tytyy olla viimeisin komentorivill. Jokainen kirjoitettava
tiedosto luodaan ennen muokkauksen aloittamista. Enintn 10 kirjoi-
tustiedostoa voidaan tehd.
a "teksti" (1)
Lis tekstin tulosteeseen ennen seuraavan rivin lukemista.
b "nimi" (2)
Hypp komentoon `:', jolla on annettu nimi. Jos nime ei annettu,
hyptn skriptin loppuun.
c "teksti" (2)
Vaihda. Poistaa tmnhetkisen tekstipuskurin. Tulostaa tekstin ja
aloittaa seuraavan kierroksen.
d (2)
Poistaa tmnhetkisen tekstipuskurin. Hypp seuraavalle kierrokselle.
D (2)
Poistaa ensimmisen rivin tmnhetkisest tekstipuskurista (kaikki
merkit ensimmiseen rivinvaihtomerkkiin asti) ja aloittaa seuraavan
kierroksen.
g (2)
Korvaa tmnhetkisen tekstipuskurin sislln pitopaikan sisllll.
G (2)
Lis pitopaikan sislln tmnhetkisen tekstipuskurin loppuun.
h (2)
Kopioi tmnhetkisen tekstipuskurin pitopaikkaan.
H (2)
Lis tmnhetkisen tekstipuskurin pitopaikan loppuun.
i "teksti" (1)
Lis teksti vakiotulosteeseen.
l (2)
Listaa valitun alueen vakiotulosteeseen. Valitsinta "w" voidaan
kytt samoin kuin s-komennossa, joka seuraa alempana. Tulostumat-
tomat merkit tulostetaan nin:
\b -- askelpalautin (ASCII 08)
\t -- sarkain (ASCII 09)
\n -- rivinvaihto (ASCII 10)
\r -- return (ASCII 13)
\e -- escape (ASCII 27)
\xx -- ASCII-merkki jonka heksanumeerinen arvo on xx.
n (2)
Kopioi tmnhetkisen tekstipuskurin vakiotulosteeseen. Lukee seuraa-
van rivin sytteest tilalle.
N (2)
Listn seuraava rivi vakiosytteest tmnhetkisen tekstipuskurin pern,
vliin kuitenkin listn rivinvaihtomerkki. Tmnhetkinen rivinumero
vaihtuu.
p (2)
Tulosta. Kopioi tmnhetkisen tekstipuskurin vakiotulosteeseen.
P (2)
Kopioi ensimmisen rivin tmnhetkisest tekstipuskurista (kaikki
merkit ensimmiseen rivinvaihtomerkkiin asti) vakiotulosteeseen.
q (1)
Lopeta. Hyptn skriptin loppuun, eik aloiteta uutta kierrosta.
r "ltiedosto" (1)
Lukee ltiedoston sislln ja laittaa sen tulostukseen ennen seuraa-
van syterivin lukemista.
s/snnllinen lauseke/korvaaja/liput (2)
Korvaa snnllisen lausekkeen esiintymt korvaajalla tmnhetkisest
tekstipuskurista. Kaikia merkkej, paitsi `/', voidaan kytt. Katso
ed(1), jos tarvitset tarkempaa kuvausta. Liput ovat seuraavat:
g -- Yleinen. Korvaa kaikki esiintymt, jotka eivt ole pllekkin
pelkn yhden korvauksen sijaan.
p -- Tulosta saatu teksti, kun korvaus on tehty.
w -- Lis tmnhetkinen tekstipuskuri tiedostoparametriin, kuten w-
komennossa, kun korvaus on tehty. Vakiotulostetta kytetn, jos
tiedostoparametrej ei ole annettu.
t "nimi" (2)
Hypp jos. Hyptn komentoon `:', jolla on annettu nimi, jos on tehty
yksikin korvaus viimeisen sytteen lukemisen tai `t'- tai
`T'-komentojen suorituksen jlkeen. Jos nime ei annettu, hyptn
skriptin loppuun.
T "nimi" (2)
Hypp virheen sattuessa. Hyptn komentoon `:', jolla on annettu
nimi, jos yksikin korvaus on eponnistunut viimeisen sytteen
lukemisen tai `t'- tai `T'-komentojen suorituksen jlkeen. Jos nime
ei annettu, hyptn skriptin loppuun.
w "ktiedosto" (2)
Kirjoita. Lis tmnhetkinen tekstipuskuri tiedostoon.
W "ktiedosto" (2)
Kirjoita ensimminen rivi. Lis ensimminen rivi tmnhetkisest teksti-
puskurista tiedostoon.
x (2)
Vaihtaa keskenn tmnhetkisen tekstipuskurin ja pitopaikan sislln.
y /teksti1/teksti2/ (2)
Korvaa. Korvaa jokainen teksti1:sen esiintyminen teksti2:lla. Tek-
stien tytyy olla yht pitki.
! "komento" (2)
Kaikki paitsi. Asettaa funktion (tai ryhmittymn, jos funktio on
`{') valitsemaksi alueeksi ainoastaan rivit, joita ei valittu
osoitteiden perusteella.
: "nimi" (0)
Tm komento ainoastaan asettaa nimen paikan hyppyskomentojen kyttn.
= (1)
Tulosta tmnhetkinen rivinumero vakiotulosteeseen omalle rivilleen.
{ (2)
Suorittaa aaltosulkujen (`{' ja `}') vliss olevat komennot ainoas-
taan, kun tmnhetkinen rivi kuuluu valittuun alueeseen.
Tyhjt komennot ohitetaan.
Tm ohjelma on kehitetty BSD 4.1 UNIX sedist, tutkimalla sen toimintape-
riaatetta ja on yhteensopiva sen kanssa (tekijiden tietmyksen ja tes-
tauksien mukaan). Kaikki BSD 4.1 sedin dokumentoidut ominaisuudet ovat
tuettuja.
Yksi dokumentoimaton ominaisuus (jos 'n' aloittaa ensimmisen kommentin,
aiheuttaa se saman vaikutuksen kuin valitsin -n komentorivill) on
jtetty toteuttamatta.
Seuraavat bugit ja rajoitukset ovat korjattu:
* Piilotettua rajoitusta ktiedostonimien pituudessa ei ole (BSD:ss
40).
* Rajoitusta nimen (ks. komento `:') pituudessa ei ole (BSD sediss
8).
* Vaihtamiskomento toimii nyt pidemmillkin tekstin ptkill.
Seuraavat lisykset vanhoihin komentoihin on tehty:
* Komennot a ja i eivt vaadi tekstin alkuun kenoviiva-rivinvaihtoy-
hdistelm. Tosin yhteensopivuussyist se on suositeltavaa.
* Komennot r ja w eivt vaadi vli ennen tiedostonime.
* Valitsimien g, p ja P jrjestyksell ei ole vli s-komennossa.
Seuraavat lisykset snnllisten lausekkeiden kielioppiin on tehty.
* \t tunnistetaan snnllisiss lausekkeissa (ja muuallakin) sarkaimen
pakottajana.
* Snnllisiss lausekkeissa + tarkoittaa, ett edellinen pala esiintyy
vhintn kerran.
Nm ominaisuudet ovat uusia:
* l-komento (listaus, dokumentoimaton ja huono versio tst on ole-
massa jo BSD:ss).
* W-komento (kirjoita tekstipuskurin ensimminen rivi tiedostoon).
* T-komento (hypp viimeisen korvauksen eponnistuessa).
* Komentoriveill komentojen perss sallitaan nyt kommentit.
Mys sedin virheilmoitukset on tehty tarkemmiksi ja opettavaisemmiksi.
Tm toteutus on mys huomattavasti pienempi ja nopeampi kuin BSD 4.1 sed.
Kytt ainoastaan vakio-I/O-kirjastoja ja exit(3)-funktiota.
This is a freeware component of the GNU and MINIX operating systems.
The user is hereby granted permission to use, modify, reproduce and
distribute it subject to the following conditions:
1. The authorship notice appearing in each source file may not be
altered or deleted.
2. The object form may not be distributed without source.
ed(1), grep(1), awk(1), lex(1), regexp(5)
Tmn mansivun kirjoitti Eric S. Raymond <esr [AT] snark.com>,
kuitenkin sed-paketti, jonka mukana tm tulee on GNU:lta.
Kyttjn sovellusohjelmat sed(7)