Відповіді:
sed -i 's|'$fileWithPath'|HAHA|g' file
Одиничні лапки визначають літеральний рядок. Поміщення змінної за межі буквального дозволяє оболонці розширити цю частину.
Також: якщо ви збираєтеся розбирати шляхи, використовуйте роздільник у команді sed, який не плутає з роздільником «/».
sed -i 's|auth-user-pass nordvpn.txt|auth-user-pass /etc/openvpn/nordvpn.txt|g' *.ovpn
здається, працює.
Кращий спосіб для буквальних рядків з прямими нахилами:
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
У випадках, коли рядок заміни або рядок шаблону містять косої риски, ви можете скористатися тим фактом, що GNU sed дозволяє альтернативному роздільнику команди заміщення. Поширеними варіантами для роздільника є характер труби | або хеш- номер - найкращий вибір обмежувального символу часто залежатиме від типу файлу, який обробляється. У вашому випадку ви можете спробувати
sed -i 's#'$fileWithPath'#HAHA#g' $file
Символ 'g' після останнього # використовується для зміни всіх входжень у файлі, якщо вам потрібно змінити лише перший випадок, а потім видалити 'g'.
$fileWithPath
міститься пробіл, вставляється неправильний шаблон.