sed (software)

programmeertaal
(Doorverwezen vanaf Stream Editor)

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 bewerken

[''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 bewerken

  • 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