45 votes

Comment échapper au chemin de fichier dans SED ?

Je souhaite remplacer $fileWithPath$file mais cela ne fonctionne pas car (je pense) le chemin n'est pas échappé. Comment l'échapper ?

sed -i 's/${fileWithPath}/HAHA/g' $file

81voto

user32178 Points 231
sed -i 's|'$fileWithPath'|HAHA|g' file

Les guillemets simples définissent une chaîne littérale. Le fait de placer la variable à l'extérieur du littéral permet au Shell de développer cette partie.

De plus, si vous voulez analyser les chemins, utilisez un délimiteur dans la commande sed qui ne se confond pas avec le délimiteur de répertoire "/".

22voto

Jeff Lancaster Points 221

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X