windows - 如何在 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
我想它不喜欢特殊字符?我怎样才能解决这个问题?
解决方案
您可以用双引号将命令包装起来,在命令内转义反斜杠和双引号,并使用
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 命令中使用了双引号,并且文字"
用^
引号外进行了转义。请注意,您还需要在替换部分中使用双转义反斜杠。
推荐阅读
- javascript - 提交时更改表单操作属性
- c# - Xamarin 表单 - 未找到绑定属性
- python - 在完成循环之前执行 for 循环之后的代码
- hibernate - 事务类中的JPA不必要的用户类
- google-chrome - 不允许加载本地资源,Chrome 服务器
- html - 在CSS中放入一些内容后如何初始化div宽度并自动更改?
- javascript - 如何将函数中的逻辑动态注入脚本元素
- c - fscanf 将其变量添加到另一个预定义变量中?
- mysql - mysql select查询与两列的sum和group by
- r - 如何从与数据框中其他列的最大值对应的列中检索值