sed
Wikipedia
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 ns. säännöllisenä lausekkeena.
Sisällysluettelo |
[muokkaa] Usein käytetyt komennot
Kommennot on testattu: GNU sed version 4.1.5
[muokkaa] s/säännöllinenlauseke/korvike/liput
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'
[muokkaa] q
Poistuu sed:stä prosessoimatta enää komentoja.
Esimerkki, tulostaa:
aaa
bbb
( echo aaa; echo bbb; echo aaa; echo bbb; ) | sed -e '/b/ q'
[muokkaa] p
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'
[muokkaa] d
Tuhoaa rivin.
Esimerkki, tulostaa:
aaa
aaa
( echo aaa; echo bbb; echo aaa; ) | sed -e '/b/ d'
[muokkaa] i\
Lisää rivin yläpuolelle toisen rivin.
Esimerkki, tulostaa:
Wikipedia
rulaa
echo rulaa | sed -e '/laa/ i\Wikipedia'
[muokkaa] a\
Lisää rivin alapuolelle puolelle toisen rivin.
Esimerkki, tulostaa:
Wikipedia
Wikimedia
Mediawiki
Wikispecies
( echo Wikipedia; echo Mediawiki; ) | sed -e '/pedia/ a\Wikimedia' -e '/wiki/ a\Wikispecies'
[muokkaa] c\
Korvaa rivin.
Esimerkki, tulostaa:
Mediawiki!
echo 'Wikimedia!' | sed -e '/media/ c\Mediawiki!'
[muokkaa] y
Toimii samalla tavalla kuin Unix:n tr eli muuntaa merkkejä.
Esimerkki, tulostaa:
AAA BBB
echo 'aaa bbb' | sed -e 'y/ab/AB/'
[muokkaa] N
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//'
[muokkaa] D
Tuhotaan "pattern space":n alusta rivinvaihtomerkkiin asti oleva kohta.
Esimerkki, tulostaa:
Wikipedia rulettaa
( echo 'Mediawiki!'; echo 'Wikipedia rulettaa' ) | sed -e 'N;D'
[muokkaa] P
Tulostetaan "pattern space":n alusta rivinvaihtomerkkiin asti oleva kohta.
Esimerkki, tulostaa:
Mediawiki!
( echo 'Mediawiki!'; echo 'Wikipedia rulettaa' ) | sed -n -e 'N;P'
[muokkaa] Monimutkaisempia esimerkkejä
Yhdistetään tiedoston tekstii.txt rivit yhdeksi riviksi eli ts. poistetaan rivinvaihtomerkit, tulostus oletustulostusvirtaan:
sed -e ':joo;N;s/\n//;t joo' < tekstii.txt