Das Suchen und Ersetzen in Dateien und Variablen wurde schon behandelt, doch das geht auch während einer Ausgabe, z.B. mit cat.
Hat man z.B. eine Datei zum einfügen einer Mail Adresse in verschiedene Datenbank Tabellen, so kann man die Beispieladresse bereits während der Ausgabe mit der richtigen ersetzen.
Datei: insert_mail_addr.sql
INSERT INTO users (email) VALUES ('user@example.com'); INSERT INTO admins (email) VALUES ('user@example.com'); INSERT INTO whitelists (email) VALUES ('user@example.com'); |
Nun will man diese Datei zwar nicht verändern, doch gleich während der Ausgabe die E-Mail Adresse mit: „webmaster@example.org“ ersetzen:
cat insert_mail_addr.sql | sed -e 's/user@example.com/webmaster@example.org/g' |
Ausgabe:
INSERT INTO users (email) VALUES ('webmaster@example.org'); INSERT INTO admins (email) VALUES ('webmaster@example.org'); INSERT INTO whitelists (email) VALUES ('webmaster@example.org'); |
Man könnte so diese (dynamisch veränderte) Datei aber auch direkt in eine MySQL-Datenbank laden:
cat insert_mail_addr.sql | sed -e 's/user@example.com/webmaster@example.org/g' | mysql -uDBUSER -pDBPASS DBNAME |
Will man Strings mit slashes (/) ersetzen kann man den Delimiter auch ändern, z.B.:
sed -e 's#/old/url/path/#/new/url/path/#g' |
Das erste zeichen nach dem s ist der Delimiter.