sed s/// funktioniert nicht

  • Hallo zusammen,

    ich möchte in meiner docker-compose.yml automatisch die Versionen ersetzen. Dazu habe ich mir den folgenden Command ausgedacht:

    Bash
    sed -i -E 's/ghcr\.io\/bennetrr\/brickinv-(frontend|backend):\d+\.\d+\.\d+/ghcr.io\/bennetrr\/brickinv-\1:${{ next-version }}/g' docker-compose.yml

    Im Regex-REPL funktioniert zumindest der erste Ausdruck (den zweiten kann ich da nicht testen), aber wenn ich den sed-Command ausführe, bleibt die Datei gleich. Am zweiten Ausdruck kann es nicht liegen, ich habe schon versucht, mit irgendwas anderem zu ersetzen, aber das funktioniert auch nicht.

    Mit --debug kann ich sehen, dass sed den Command als

    Code
    s/ghcr\\.io\/bennetrr\/brickinv-(frontend|backend):d+\\.d+\\.d+/ghcr.io/bennetrr/brickinv-\1:${{ next-version }}/g

    interpretiert und vor den d's die Backslashes fehlen.

    Was mache ich falsch?


  • bennetr January 25, 2024 at 7:32 PM

    Selected a post as the best answer.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!