sed-Ersetzung mit Hochkommas im Suchstring

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
feltel
Webmaster
Beiträge: 10446
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

sed-Ersetzung mit Hochkommas im Suchstring

Beitrag von feltel » 14.02.2021 13:01:01

Irgendiwe bekomme ich einen sed-Aufruf nicht zusammen. Ich will/muss den ff. String in einer Datei durch einen anderen ersetzen:

Code: Alles auswählen

f 'files/opsi/cfg/config.ini' 910 68f7e9845944ffd56e93685db8e5c84e
Der neue String wäre

Code: Alles auswählen

f 'files/opsi/cfg/config.ini' 932 a4f4857e63c904569114eaa58880749c
Das blöde sind die Hochkommas, die mir ff. Aufruf vermasseln:

Code: Alles auswählen

sed -i -r 's/^f 'files/opsi/cfg/config.ini'.*/f 'files/opsi/cfg/config.ini' 932 a4f4857e63c904569114eaa58880749c' /var/lib/opsi/depot/opsi-client-agent/files/opsi/cfg/config.ini
Die Hochkommas hab ich versucht mit Backslashes zu maskieren, aber da hat die Bash etwas dagegen. Kann mir mal jemand den sprichwörtlichen Wink mit dem Zaunspfahl verpassen?

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: sed-Ersetzung mit Hochkommas im Suchstring

Beitrag von MSfree » 14.02.2021 13:13:21

feltel hat geschrieben: ↑ zum Beitrag ↑
14.02.2021 13:01:01
Die Hochkommas hab ich versucht mit Backslashes zu maskieren,
Versuch es mal mit drei Backslashes als Escape statt nur einem.

Benutzeravatar
TRex
Moderator
Beiträge: 8316
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: sed-Ersetzung mit Hochkommas im Suchstring

Beitrag von TRex » 14.02.2021 13:20:10

Außen doppelte, innen einfache?

Code: Alles auswählen

sed -i -r "s/^f 'files/opsi/cfg/config.ini'.*/f 'files/opsi/cfg/config.ini' 932 a4f4857e63c904569114eaa58880749c" /var/lib/opsi/depot/opsi-client-agent/files/opsi/cfg/config.ini
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: sed-Ersetzung mit Hochkommas im Suchstring

Beitrag von tobo » 14.02.2021 13:38:51

Neben TRex' Ergänzung (alternativ auch das Quoting temporär beenden: '...'\''...') auch den Konflikt der Slashes als Syntaxtrenner und Literal auflösen: anstatt s/// z.B. s### oder s||| oder aber die Literale quoten \/.
Zuletzt geändert von tobo am 14.02.2021 13:49:57, insgesamt 1-mal geändert.

Benutzeravatar
feltel
Webmaster
Beiträge: 10446
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Re: sed-Ersetzung mit Hochkommas im Suchstring

Beitrag von feltel » 14.02.2021 13:49:18

Danke, mit TRex & tobos Hinweis klappts, auch ohne wildes "escapen":

Code: Alles auswählen

sed -i -r "s#^f 'files/opsi/cfg/config.ini'.*#f 'files/opsi/cfg/config.ini' 932 a4f4857e63c904569114eaa58880749c#" /var/lib/opsi/depot/opsi-client-agent/files/opsi/cfg/config.ini
Ich merke, ich nutze sed & co leider zu selten, und da vergisst man sowas einfach leider viel zu schnell.

Antworten