Je veux échapper un nom de fichier DOS pour pouvoir l'utiliser avec sed. J'ai quelque chose de fichier batch DOS comme ceci:Le nom du fichier DOS s'échappe pour être utilisé avec les commandes * nix
set FILENAME=%~f1
sed 's/Some Pattern/%FILENAME%/' inputfile
(Note: %~f1
- étend %1
à un nom de chemin complet - C:\utils\MyFile.txt
)
Je trouve que les anti-slash dans %FILENAME%
sont juste Echapper à la lettre suivante .
Comment puis-je les doubler pour qu'ils s'échappent?
(j'ai installé Cygwin ne hésitez pas à utiliser d'autres commandes * nix)
Solution
La combinaison de suggestions de Jeremy et Alexandru Nedelcu, et en utilisant | pour le délimiteur dans la commande sed je
set FILENAME=%~f1
cygpath "s|Some Pattern|%FILENAME%|" >sedcmd.tmp
sed -f sedcmd.tmp inputfile
del /q sedcmd.tmp