Suchen und Ersetzen während der Ausgabe

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.

Quellen

Published by

Steven Varco

Steven ist ein Redhat RHCE-Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.