Ich habe versucht, eine sed ersetzen zu tun. Aus irgendeinem Grund kann ich meinen Kopf sed und regulären Ausdrücken nicht nur um (das ist meine zweite sed Frage)Suchen ersetzen Zeichenfolge vor und nach
Grundsätzlich ich Text finden wollen und ersetzen Sie dann das nächste Auftreten eines Textes finden und ersetzen Sie dass
Bisher habe ich diese
echo "This could be anywhere and this bit should be changed \$\{hcvar-BookName\} and this would remain" | sed 's/$\\{hcvar-/" + hcvar-/g'
Das gibt:
*This could be anywhere and this bit should be changed " + hcvar-BookName\} and this would remain*
Allerdings möchte ich zurückkehren
*This could be anywhere and this bit should be changed " + hcvar-BookName + " and this would remain*
Dies wäre der Ersatz} mit + "
Die Logik wäre so etwas wie:
Find: \$\{hcvar-
Replace with: " + hcvar-
Then find the next occurrence of: \}
Replace with: + "
Das zweite Bit wäre direkt nach der Zeichenfolge zu ersetzen, enthält: hcvar-
Dies sollte für die folgenden String-Beispiele arbeiten
- Dies könnte überall sein und dieses Bit sollte \ $ {hcvar-Bookname} geändert werden und dies würde bleiben
- Dies könnte überall und dieses Bit sein sollte \ $ {hcvar-somethingelse} geändert werden und dies würde bleiben
- Dies könnte überall sein und dieses Bit sollte
\ $ {hcvar-wouldnevercontainspaces} geändert werden und dies würde
Jede Hilfe würde geschätzt bleiben.
In POSIX sed '$' ist literal, wenn es nicht das letzte Zeichen im "Muster" -Teil des Ersatzbefehls ist. In vielen Varianten ist '$' jedoch kein Literal, wenn es das letzte logische Zeichen ist, dh: 's/\ (a \ | $ \)/b /' ersetzt 'a' oder das Nullbyte nach dem Musterraum mit' b'. – andlrc