Odpowiedzi:
sed -i 's|'$fileWithPath'|HAHA|g' file
Pojedyncze cudzysłowy definiują literał łańcuchowy. Umieszczenie zmiennej poza literałem pozwala powłoce rozwinąć tę część.
Ponadto: jeśli zamierzasz analizować ścieżki, użyj separatora w poleceniu sed, który nie myli się z ogranicznikiem katalogu „/”.
sed -i 's|auth-user-pass nordvpn.txt|auth-user-pass /etc/openvpn/nordvpn.txt|g' *.ovpn
wydaje się działać.
W okolicznościach, w których zastępujący ciąg lub ciąg wzorca zawierają ukośniki, możesz skorzystać z faktu, że GNU sed zezwala na alternatywny ogranicznik dla polecenia zastępczego. Typowe opcje dla separatora to znak potoku | lub hash # - najlepszy wybór znaku ograniczającego będzie często zależeć od typu przetwarzanego pliku. W twoim przypadku możesz spróbować
sed -i 's#'$fileWithPath'#HAHA#g' $file
Znak „g” po ostatnim # służy do zmiany wszystkich wystąpień w pliku, jeśli trzeba zmienić tylko pierwsze wystąpienie, a następnie usunąć „g”.
Lepszy sposób na dosłowne ciągi znaków z ukośnikami:
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
$fileWithPath
zawiera spacje, wstawiany jest niewłaściwy wzór.