Я хочу экранировать имя файла DOS, чтобы использовать его вместе с sed. У меня есть пакетный файл DOS что-то вроде этого:
set FILENAME=%~f1
sed 's/Some Pattern/%FILENAME%/' inputfile
(Примечание: %~f1
- расширяет %1
до полного имени пути - C:\utils\MyFile.txt
)
Я обнаружил, что обратная косая черта в %FILENAME%
просто ускользает от следующей буквы.
Как я могу удвоить их, чтобы они избежали?
(у меня установлен cygwin, поэтому не стесняйтесь использовать любые другие команды * nix)
Решение
Объединение предложений Джереми и Александру Недельку и использование | для разделителя в команде sed у меня есть
set FILENAME=%~f1
cygpath "s|Some Pattern|%FILENAME%|" >sedcmd.tmp
sed -f sedcmd.tmp inputfile
del /q sedcmd.tmp