【发布时间】:2010-09-07 07:26:06
【问题描述】:
我想转义一个 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
【问题讨论】: