我希望能够转义DOS文件名,以便我可以在sed中使用它。我有一个类似于下面的DOS批处理文件:
set FILENAME=%~f1
sed 's/Some Pattern/%FILENAME%/' inputfile
(注意:
%~f1
- 将%1
扩展为完全限定的路径名 - C:\utils\MyFile.txt
)。我发现
%FILENAME%
中的反斜杠只是转义下一个字母。如何将它们加倍以便转义?
(我已经安装了cygwin,所以可以使用任何其他*nix命令)
解决方案:
结合Jeremy和Alexandru Nedelcu的建议,并在sed命令中使用|作为分隔符,我有:
set FILENAME=%~f1
cygpath "s|Some Pattern|%FILENAME%|" >sedcmd.tmp
sed -f sedcmd.tmp inputfile
del /q sedcmd.tmp