Réponses:
sed -i 's|'$fileWithPath'|HAHA|g' file
Les guillemets simples définissent un littéral de chaîne. Mettre la variable en dehors du littéral permet au shell de développer cette partie.
De plus, si vous allez analyser les chemins, utilisez un délimiteur dans la commande sed qui ne confond pas avec le délimiteur de répertoire "/".
sed -i 's|auth-user-pass nordvpn.txt|auth-user-pass /etc/openvpn/nordvpn.txt|g' *.ovpn
semble fonctionner.
Une meilleure méthode pour les chaînes littérales avec des barres obliques:
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
Dans les cas où la chaîne de remplacement ou la chaîne de modèle contient des barres obliques, vous pouvez utiliser le fait que GNU sed autorise un séparateur alternatif pour la commande substitute. Les choix courants pour le délimiteur sont le caractère pipe | ou le hash # - le meilleur choix de caractère de délimitation dépendra souvent du type de fichier en cours de traitement. Dans votre cas, vous pouvez essayer
sed -i 's#'$fileWithPath'#HAHA#g' $file
Le caractère 'g' après le dernier # est utilisé pour changer toutes les occurrences du fichier si vous ne devez modifier que la première occurrence puis supprimez le 'g'.
$fileWithPath
contient des espaces, le mauvais modèle est inséré.