stefankittel
Goto Top

String mit Zeilenumbruch per Bash ersetzen

Hallo,

ich möchte gerne in einer Datei einen String durch einen anderen ersetzen.
Das dumme daran ist, dass ein Zeilenumbruch enthalten ist.
Damit kann sed und perl nicht so ohne weiteres umgehen.

Vorher
Text Text Text\n
key_buffer_size=16M\n
Text Text Text\n

Nachher
Text Text Text\n
#key_buffer_size=16M\n
key_buffer_size=512M\n
Text Text Text\n

Das habe ich probiert, aber sed arbeitet standardmäßig zeilenweise. Genau wie perl.
sed -i -e 's/\nkey_buffer_size/\nkey_buffer_size=17M\n#key_buffer_size/g' /etc/mysql/mysql.conf.d/mysqld.cnf

Kann mir bitte jemand kurz helfen?
Danke

System ist Ubuntu 16 LTS (Testystem)

Danke

Content-ID: 303362

Url: https://administrator.de/forum/string-mit-zeilenumbruch-per-bash-ersetzen-303362.html

Ausgedruckt am: 13.04.2025 um 23:04 Uhr

114757
Lösung 114757 01.05.2016 aktualisiert um 10:59:50 Uhr
Goto Top
1
sed -i -e 's/^\(key_buffer_size.*\)/#\1/' -e '/#key_buffer_size/a key_buffer_size=512M' /etc/mysql/mysql.conf.d/mysqld.cnf  
Gruß jodel32