我想转义一个 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