Bash:
Tekst zoeken en vervangen
Hoe te:
Hier is hoe je de kracht van zoeken en vervangen in bash gebruikt:
- Tekst binnen een string verwisselen met
sed
:
echo "Hello world" | sed 's/world/universe/'
# Uitvoer: Hello universe
- Tekst in een bestand vervangen, met het opslaan van de wijzigingen:
sed -i 's/old_text/new_text/g' file.txt
- Variabelen gebruiken in je zoek- en vervangopdracht:
old="apple"
new="banana"
sed "s/$old/$new/g" <<< "I like apple pies"
# Uitvoer: I like banana pies
Onthoud, g
aan het einde betekent “globaal”, dus je verandert elke overeenkomst in de regel, niet slechts de eerste.
Diepgaand
We hebben al eeuwen hulpprogramma’s voor tekstverwerking op Unix-achtige systemen. sed
, kort voor Stream Editor, is zo’n hulpprogramma en het bestaat al sinds de jaren 1970. Het is niet alleen voor eenvoudige vervangingen; sed
kan ook tekst in complexe patronen snijden en hakken.
Alternatieven? Zeker. awk
is een beetje geavanceerder en kan wonderen verrichten met kolommen en rijen. Voor snelle oplossingen kan grep
je helpen dingen te vinden, maar het zal niet vervangen - het is meer als de uitkijk.
Onder de motorkap gebruikt sed
reguliere expressies, die zijn als wildcards op steroïden. Ze kunnen bijna elk patroon matchen waar je aan kunt denken. Het maakt sed
ongelooflijk krachtig, maar ook een beetje lastig om te beheersen.
Zie Ook
man sed
voor de handleiding oversed
- Een introductie tot
sed
- De Kunst van de Command Line voor meer bash trucjes (https://github.com/jlevy/the-art-of-command-line)