Im Prinzip bei sed genauso, nur mit Backslash statt Dollar:
Das g hinten, das ich weggelassen habe, steht für global, und würde alle Muster dieser Art in einer Zeile ersetzen, nicht nur das erste.
In der Anwendung übergibt man meist eine Datei, die geändert werden soll:
| sed -r 's/,([A-Z])/_\1/' alt
sed -r 's/,([A-Z])/_\1/' alt > neu
cat alt | sed -r 's/,([A-Z])/_\1/' > neu
sed -ri 's/,([A-Z])/_\1/' alt
sed -ribak 's/,([A-Z])/_\1/' alt
|
Version 0 gibt die Änderung auf den Bildschirm aus, 1 schreibt sie in eine neue Datei, die Catversion macht das gleiche umständlicher, mit -i ändert man die Datei an Ort und Stelle (in place), -ibak erzeugt eine Sicherheitskopie der alten Datei mit der Endung bak.
| sed -r 's/,([A-Z])/_\1/' alt > alt
cat alt | sed -r 's/,([A-Z])/_\1/' > alt
|
klappt nicht, weil eine neue Datei "alt" zum Schreiben geöffnet wird, die die alte Datei ersetzt, bevor sie gelesen wurde - das ist nicht spezifisch für sed, aber tritt bei sed als Problem für viele erstmalig häufig auf.