Yanıtlar:
sed -i 's|'$fileWithPath'|HAHA|g' file
Tek tırnak, bir dize değişmezini tanımlar. Değişkeni değişmezin dışına koymak, kabuğun bu kısmı genişletmesini sağlar.
Ayrıca: yolları ayrıştırmaya gidiyorsanız, sed komutunda "/" diziniyle karıştırmayan bir sınırlayıcı kullanın.
sed -i 's|auth-user-pass nordvpn.txt|auth-user-pass /etc/openvpn/nordvpn.txt|g' *.ovpn
işe yarıyor gibi.
Eğik çizgi içeren değişmez dizgiler için daha iyi bir yol:
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
Değiştirme dizesinin veya desen dizisinin eğik çizgiler içerdiği durumlarda, GNU sed'in ikame komutu için alternatif bir sınırlayıcıya izin verdiği gerçeğini kullanabilirsiniz. Sınırlayıcı için ortak seçimler boru karakteridir | veya karma # - en iyi sınırlayıcı karakter seçimi genellikle işlenen dosyanın türüne bağlı olacaktır. Senin durumunda deneyebilirsin
sed -i 's#'$fileWithPath'#HAHA#g' $file
Son # 'dan sonraki' g 'karakteri , sadece ilk defa değiştirmeniz gerekiyorsa' g 'harfini kaldırmanız gerekiyorsa, dosyadaki tüm oluşumları değiştirmek için kullanılır.
$fileWithPath
boşluk içeriyor, yanlış model yerleştirilir.