Sed
tarkoittaa stream editoria. Se on komentorivipohjainen editori Linuxille. sed:n suosittu käyttö on tiedostojen muokkaamiseen osana automaatiokomentosarjaa Linuxissa, koska tavalliset editorit vaativat aktiivisen käyttäjän syötteen eivätkä voi muokata tiedostoja muokkausruutujen ulkopuolella. Sed on yleisimmin käytetty etsimiseen ja korvaamiseen komentoriviltä.
Tämän tyyppinen tekstieditori voidaan myös luokitella ei-interaktiiviseksi tekstieditoriksi.
Katsotaanpa joitain yleisiä vaihtoehtoja tiedostojen muokkaamiseen Sedillä. Otetaan esimerkkinä seuraava tiedosto:
$: cat test.txt Nopea ruskea koira hyppäsi laiskan kissan yli. Linux käyttöjärjestelmä. Kotini lähellä olevassa Metsässä on sekä kissa että susia.
Etsi ja korvaa
Jos haluat etsiä tiedostosta merkkijonoa ja korvata sen toisella merkkijonolla, suorita:
sed -i "s/cat/fox/g" test.txt
Tässä, -i
lippu kehottaa sed:tä kirjoittamaan muutokset tiedostoon. Ilman tätä lippua sed
näyttää vain tiedoston muuttuneella merkkijonolla.
Lainausmerkeissä meillä on s/kissa/kettu/g
. The s
on etsi ja korvaa -komentoa varten sed
. Sitten meillä on etsittävä merkkijono, joka on kissa
. Sitten merkkijono, jolla se korvataan, eli kettu
. Lopuksi meillä on valinnainen g
, joka ohjaa sed
korvaamaan kaikki esiintymät tiedoston kaikilla riveillä. Ilman g
, sed korvaa vain ensimmäisen esiintymisen kissa
joka rivillä.
Regexiä voidaan käyttää myös täällä.
sed -i "s/f[a-z]*\./cat\./g"
Lisää
Jos haluat lisätä tekstiä ennen riviä, jolla on vastaava merkkijono, käytä:
sed -i "/cat/i Start:" test.txt
Tässä, kissa
on haettu merkkijono ja Alkaa:
on merkkijono, joka syötetään ennen riviä, josta etsitty merkkijono löytyy.
Vastaavasti voit lisätä tekstiä rivin jälkeen käyttämällä:
sed -i "/fox/a End." testi.txt
Poistaa
Jos haluat poistaa rivin, joka sisältää alimerkkijonon, käytä:
sed -i "/Linux/d" test.txt
Jos haluat poistaa rivin, jossa on rivinumero, esim. ensimmäinen rivi, käytä:
sed -i '1d' testi.txt
Useiden toimintojen yhdistäminen
Useiden toimintojen yhdistäminen, esim. etsi ja korvaa, poista, yhdellä komennolla, -e
lippua saa käyttää.
sed -i -e "s/kettu/kissa/g" -e '2d' testi.txt
? Kippis!