Sed - mehrere Zeilen aufeinmal ändern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Sed - mehrere Zeilen aufeinmal ändern

Beitrag von Colttt » 17.10.2011 09:40:40

Hallo,
kann man folgendes in einem sed-aufruf machen?

Code: Alles auswählen

sed -i.backup -e "s/\/tmp\/zabbix_server.log/\/var\/log\/zabbix\/zabbix_server.log/g" /etc/zabbix/zabbix_server
sed -i.backup -e "s/DBUser=root/DBUser=zabbix/g" /etc/zabbix/zabbix_server.conf
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Sed - mehrere Zeilen aufeinmal ändern

Beitrag von peschmae » 17.10.2011 10:14:22

Natürlich. Entweder du übergibts sed eine mehrzeilige Expression, oder du machst mehrere "-e"s hin:

Code: Alles auswählen

echo "a b c" | sed -e 's#a#b#g
s#b#e#g'
oder

Code: Alles auswählen

echo "a b c" | sed -e 's#a#b#g' -e 's#b#e#g'
Alternativ kannst du deine sed-expressions auch in eine Datei schreiben:

Code: Alles auswählen

s#a#b#g
s#b#e#g
und dann ausführen mit echo "a b c" | sed -f scr

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Meillo
Moderator
Beiträge: 9241
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sed - mehrere Zeilen aufeinmal ändern

Beitrag von Meillo » 17.10.2011 11:55:17

Oder mit Strichpunkt trennen.
POSIX.1-2008 hat geschrieben: Command verbs other than {, a, b, c, i, r, t, w, :, and # can be followed by a <semicolon> [...]
[...]
Historically, the sed ! and } editing commands did not permit multiple commands on a single line using a <semicolon> as a command delimiter.
Use ed once in a while!

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Sed - mehrere Zeilen aufeinmal ändern

Beitrag von Colttt » 17.10.2011 12:14:51

hallo und danke..
habe das jetzt so gemacht:

Code: Alles auswählen

sed -i.backup -e "s|/tmp/zabbix_agentd.log|/var/log/zabbix/zabbix_agentd.log|g" -e "s|# PidFile=/tmp/zabbix_agentd.pid|PidFile=/var/run/zabbix/zabbix_agentd.pid|g" /etc/zabbix/zabbix_agentd.conf
Debian-Nutzer :D

ZABBIX Certified Specialist

Antworten