sed で使用できるように DOS ファイル名をエスケープしたい。次のようなDOSバッチファイルがあります。
set FILENAME=%~f1
sed 's/Some Pattern/%FILENAME%/' inputfile
(注: -完全修飾パス名に%~f1
展開されます - )%1
C:\utils\MyFile.txt
%FILENAME%
バックスラッシュが次の文字をエスケープしているだけであることがわかりました。
それらがエスケープされるように、どうすればそれらを2倍にすることができますか?
(私は 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