首页 > 解决方案 > 如何在 Windows 上使用 Sed 将特殊字符插入文本文件?

问题描述

我想在 .bat 脚本中使用 sed 命令替换文本文件的第二行。我可以在没有任何特殊字符的情况下执行此操作,例如:

sed -i 2s/.*/SUCCESS/ file.txt

但是我要插入的文本如下:

outfolder = "G:\Folder with Space and Quotes\"

如果我使用命令:

sed -i 2s/.*/outfolder = "G:\Folder with Space and Quotes\"/ file.txt

结果是一个错误:

sed: -e expression #1, char 15: unterminated `s' command

我想它不喜欢特殊字符?我怎样才能解决这个问题?

标签: windowsbatch-filesedreplace

解决方案


您可以用双引号将命令包装起来,在命令内转义反斜杠和双引号,并使用

sed -i "2s/.*/outfolder = \"G:\\Folder with Space and Quotes\\\"/" file.txt

或者,您也可以使用

sed -i "2s/.*/outfolder = "^""G:\\Folder with Space and Quotes\\"^""/" file.txt

请注意,我在 sed 命令中使用了双引号,并且文字"^引号外进行了转义。请注意,您还需要在替换部分中使用双转义反斜杠。


推荐阅读