Sed is een acroniem van Stream EDitor. Het is een computerprogramma dat behoort tot de standaardset van applicaties onder Unix en GNU/Linux (en varianten). Ook voor andere besturingssystemen bestaan er ports van dit programma.
Sed is niet bedoeld als interactieve editor -hoewel het, met enige moeite, wel als zodanig zou kunnen worden gebruikt- maar wordt meestal, op de unix-manier, gebruikt in pipe-structuren.
In het geval van sed betekent dit: lees uitvoer van een ander commando of van een bestand, bewerk dit volgens een aantal regels (het sed-script) en stuur de uitvoer naar een ander programma of naar een bestand. sed maakt gebruik van een simpele en krachtige commando-set en kent een eenvoudige branch- en variabelen-structuur. Desondanks is de taal Turing-compleet.
Sed maakt gebruik van zeer uitgebreide en krachtige reguliere expressies.
Belangrijke kenmerken van sed:
- regel-georiënteerd: alle commando's worden losgelaten op een regel alvorens een volgende regel wordt gelezen en verwerkt;
- De in bewerking zijnde regel wordt opgeslagen in een zogenaamde pattern space waarin eventuele bewerkingen plaatsvinden;
- een zogenaamde hold space kan worden gebruikt om voorgaande regels op te slaan;
- door middel van speciale commando's kunnen pattern space en hold space worden uitgewisseld;
- sed kent een goto label commando;
- er kunnen labels worden gedefinieerd, te gebruiken in goto en conditionele commando's;
- de enige variabelen die sed kent zijn de positionele velden binnen een reguliere expressie;
Commando's
- [''addr''][''command''] meerregelige commando's
- [''line-addr''][''command''] eenregelige commando's
addr is een regelnummer of een reguliere expressie
command kan zijn:
- # - commentaar (alleen op positie 1 van de regel)
- s - Substitutie
- d - verwijder (delete) volledige regel
- a - voeg de volgende regel(s) toe (append) achter de huidige
- i - voeg de volgende regel(s) toe (insert) voor de huidige
- c - vervangen (change)
- y - transformeren
- p - geef de huidige regel weer (print)
- n - ga naar de volgende regel (next)
- r - lees (read) een ander bestand
- w - schrijf (write) naar een bestand
Sed-voorbeelden
- sed -n '3,4p' /etc/passwd
- (Toont enkel de 3e en 4e regel van de passwd file)
- echo wokopedoa | sed s/o/i/
- Wijzigt het eerste voorkomen van o in een i, output: wikopedoa
- echo wokopedoa | sed s/o/i/g
- Wijzigt alle voorkomens van o in i, output: wikipedia
- echo aaa-bbb | sed 's+\(.*\)-\(.*\)+\2-\1+'
- verwissel tekst aan beide zijden van min-teken