Naar inhoud springen

sed (software)

Uit Wikipedia, de vrije encyclopedie

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;
[''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 | brontekst 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