Antworten:
sed -i 's|'$fileWithPath'|HAHA|g' file
Einfache Anführungszeichen definieren ein Zeichenfolgenliteral. Wenn Sie die Variable außerhalb des Literales platzieren, kann die Shell diesen Teil erweitern.
Außerdem: Wenn Sie Pfade analysieren möchten, verwenden Sie im Befehl sed ein Trennzeichen, das nicht mit dem Verzeichnistrennzeichen "/" verwechselt wird.
sed -i 's|auth-user-pass nordvpn.txt|auth-user-pass /etc/openvpn/nordvpn.txt|g' *.ovpn
scheint zu funktionieren.
Ein besserer Weg für wörtliche Zeichenfolgen mit Schrägstrichen:
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
In Fällen, in denen die Ersetzungszeichenfolge oder die Musterzeichenfolge Schrägstriche enthält, können Sie die Tatsache nutzen, dass GNU sed einen alternativen Begrenzer für den Ersetzungsbefehl zulässt. Häufige Auswahlmöglichkeiten für das Trennzeichen sind das Pipe-Zeichen | oder das Hash # - Die beste Wahl für die Begrenzung von Zeichen hängt oft von der Art der zu verarbeitenden Datei ab. In deinem Fall kannst du es versuchen
sed -i 's#'$fileWithPath'#HAHA#g' $file
Das Zeichen 'g' nach dem letzten # wird verwendet, um alle Vorkommen in der Datei zu ändern, wenn Sie nur das erste Vorkommen ändern und dann das 'g' entfernen müssen.
$fileWithPath
Leerzeichen das falsche Muster eingefügt wird.