sed

Wikipedia
Loikkaa: valikkoon, hakuun
Tämä artikkeli käsittelee suodatinta. SED voi tarkoittaa myös Saksan sosialistista yhtenäisyyspuoluetta.

Alun perin Unixille tehty sed (lyhenne sanoista stream editor) on tehokas ohjelmoitava vuonsuodatin tekstivirran manipulointiin.

Perl-ohjelmointikieli on saanut huomattavia vaikutteita sed:stä.

Normaalisti sed:n komento on muotoa:

[osoite1,[osoite2]] komento 

jossa osoite1 tai osoite2 (tai kumpikin) voidaan antaa tekstivirran rivin numeerisen arvon sijasta myös niin sanottuna säännöllisenä lausekkeena.

Usein käytetyt komennot[muokkaa | muokkaa wikitekstiä]

Kommennot on testattu: GNU sed version 4.1.5

s/säännöllinenlauseke/korvike/liput[muokkaa | muokkaa wikitekstiä]

Esimerkki, tulostaa 'boaboaboa':

echo aaa | sed -e 's/a/boa/g'

Esimerkki, tulostaa 'baaa':

echo aaaa | sed -e 's/a/b/1'

Esimerkki, tulostaa 'abaa':

echo aaaa | sed -e 's/a/b/2'

q[muokkaa | muokkaa wikitekstiä]

Poistuu sed:stä prosessoimatta enää komentoja.

Esimerkki, tulostaa:
aaa
bbb

( echo aaa; echo bbb; echo aaa; echo bbb; ) | sed -e '/b/ q'

p[muokkaa | muokkaa wikitekstiä]

Tulostaa "patternspace":n. Normaalisti sed tulostaa kaikki rivit, joten jotta tällä komennolla olisi mitään käyttöä, täytyy parametrinä käyttää valitsinta -n, jolloin sed ei enää oletusarvoisesti tulostakaan mitään, ellei toisin pyydetä:

Esimerkki, tulostaa: aaa

( echo bbb; echo ccc; echo aaa; echo ddd; ) | sed -n -e '/a/ p'

d[muokkaa | muokkaa wikitekstiä]

Tuhoaa rivin.

Esimerkki, tulostaa:
aaa
aaa

( echo aaa; echo bbb; echo aaa; ) | sed -e '/b/ d'

i\[muokkaa | muokkaa wikitekstiä]

Lisää rivin yläpuolelle toisen rivin.

Esimerkki, tulostaa:
Wikipedia
rulaa

echo rulaa | sed -e '/laa/ i\Wikipedia'

a\[muokkaa | muokkaa wikitekstiä]

Lisää rivin alapuolelle toisen rivin.

Esimerkki, tulostaa:
Wikipedia
Wikimedia
Mediawiki
Wikispecies

( echo Wikipedia; echo Mediawiki; ) | sed -e '/pedia/ a\Wikimedia' -e '/wiki/ a\Wikispecies'

c\[muokkaa | muokkaa wikitekstiä]

Korvaa rivin.

Esimerkki, tulostaa:
Mediawiki!

echo 'Wikimedia!' | sed -e '/media/ c\Mediawiki!'

y[muokkaa | muokkaa wikitekstiä]

Toimii samalla tavalla kuin Unix:n tr eli muuntaa merkkejä.

Esimerkki, tulostaa:
AAA BBB

echo 'aaa bbb' | sed -e 'y/ab/AB/'

N[muokkaa | muokkaa wikitekstiä]

Komennon toimintaa voi olla aluksi hieman vaikeaa hahmottaa eikä sen käyttö yksinään olekaan kovin tehokasta. Se yhdistää kaksi riviä toisiinsa sisällyttäen rivinvaihtomerkin niiden väliin.

Esimerkki, tulostaa
Wikimedia Mediawiki!

( echo 'Wikimedia'; echo ' Mediawiki'; ) | sed -e 'N;s/\n//'

D[muokkaa | muokkaa wikitekstiä]

Tuhotaan "pattern space":n alusta rivinvaihtomerkkiin asti oleva kohta.

Esimerkki, tulostaa:
Wikipedia rulettaa

( echo 'Mediawiki!'; echo 'Wikipedia rulettaa' ) | sed -e 'N;D'

P[muokkaa | muokkaa wikitekstiä]

Tulostetaan "pattern space":n alusta rivinvaihtomerkkiin asti oleva kohta.

Esimerkki, tulostaa:
Mediawiki!

( echo 'Mediawiki!'; echo 'Wikipedia rulettaa' ) | sed -n -e 'N;P'

Monimutkaisempia esimerkkejä[muokkaa | muokkaa wikitekstiä]

Yhdistetään tiedoston tekstii.txt rivit yhdeksi riviksi eli ts. poistetaan rivinvaihtomerkit, tulostus oletustulostusvirtaan:

sed -e ':joo;N;s/\n//;t joo' < tekstii.txt

Katso myös[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]