een lange titel

Introductie van de sed streaming editor

Het commando sed is de streaming variant van het interactieve ed commando.

Dit laatste is een relatief primitieve editor waar je alle wijzigingen moet aanbrengen met commando’s en niet met de pijltjestoetsen. Deze editor stamt nog uit het tijdperk waar er enkel commandolijn werd gewerkt en zelfs enkel met terminals met papieruitvoer (de zogenaamde teletypes).

Het commando sed is afgeleid van ed en wordt niet interactief gebruikt. Met sed kan je tekst wijzigen die doorheen pipes wordt gestuurd zoals in het volgende voorbeeld:

echo 'dit is faut' | sed 's/faut/fout/'

In het bovenstaande voorbeeld wordt de output van echo doorheen sed en in elke regel wordt faut door fout vervangen.

In deze tekst wordt alleen maar het gebruik van het subcommando s uitgelegd. Er zijn nog andere commando’s maar die komen in deze tekst niet aanbod. Meestal wordt alleen maar het s commando gebruikt.

De letter s wordt gevolgd door twee patronen afgescheiden door het scheidingsteken /. Je kan ook een # scheidingsteken gebruiken wanneer een slash als teken in de patronen voorkomt.

De punt . stelt om het even welk teken voor.

s/f..t/fout/

Het bovenstaande commando zoekt een f gevolgd door twee willekeurige tekens gevolgd door een g.

Je kan herhalingen formuleren met * en +.

  • * is 0, 1, … n.

  • + is 1, 2, … n.

s/ab*c//

In het bovenstaande commando wordt er gezocht naar ac, abc, abbc, abbbc, enzoverder.

Met de tekens ^ en $ kan je het begin en het einde van de regel zoeken.

  • ^ begin van de regel

  • $ einde van de regel

Het volgende commando verwijdert alle spaties aan het begin van de regel.

s/^ *//

En dit commando verwijdert alle spaties aan het einde van de regel.

s/ *$//

Er zijn ook speciale tekens die je in het tweede patroon kan schrijven. De ampersand & is zulk een teken; het wordt vervangen door de tekst die in het eerste patroon gevonden is.

s/a.*b/(&)/

Het vorige commando plaatst de tekst die met a start en met b eindigt, tussen haken.

Je kan tekens selecteren met de bereiknotatie: [a-z] betekent een kleine letter, [a-zA-Z] betekent een kleine of grote letter en [0-9] betekent een cijfer.

Met de tekens \( en \) kan je patronen groeperen. In het volgende voorbeeld betekent dit dat de letters de meerdere keren samen herhaald mogen worden. De herhaling met * slaat op de groep van twee letters de.

s/a\(de\)*b//

De patronen die je in met de haken \( en \) groepeert kan je in het te vervangen patroon opnieuw gebruiken. Je gebruikt dan voor de verschillende patronen de combinaties \1, \2, \3, enzoverder.

Het volgende voorbeeld keert uitdrukking om: 123+678 wordt 678+123. Je verkijgt dit resultaat door in het te vervangen patroon de nummers van de gevonden groepen om te keren: eerste \2 en dan \1.

s/\(.*\)+\(.*\)/\2+\1/

Een herhalingen met een specifiek aantal schrijf je met de accolades: \{ en \}. In het volgende voorbeeld mag de letter b 0 of éénmaal voorkomen.

s/ab\{0,1\}//

Extra informatie vind je hier: