windows - 禁用sed中反斜杠的转义功能

标签 windows sed cmd escaping pattern-matching

在 GNU sed(以及我所知道的几乎所有其他发行版)中:

SET VAR=C:\nyc
sed "s/PATH/%VAR%/g" file.txt

导致任何出现的 PATH 被替换为后跟“yc”的新行。在我的例子中,VAR 始终是用户提供的文字(它是 Windows 路径)。如何禁用“\”的默认解释? (我知道一些技巧,比如将 VAR 保存在一个文件中,并将 VAR 中的所有“\”替换为“\\”,然后将其传递给 sed)

最佳答案

您可以在 Windows 命令外壳中修改 %var%:

>type file
PATH
PATH

>set var=C:\nyc

>sed "s/PATH/%VAR%/g" file
C:
yc
C:
yc

>set var=%var:\=\\%

>echo %var%
C:\\nyc

>sed "s/PATH/%VAR%/g" file
C:\nyc
C:\nyc

关于windows - 禁用sed中反斜杠的转义功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17295136/

相关文章:

linux - 如何使用 bash 将未加引号的地址包装在文件中?

windows - 是否可以将非控制台 Win32 应用程序附加到调用 cmd shell?

windows - Windows Server 是否支持 Per-Monitor v2 Awareness?

windows - goapp 服务 : unable to find dev_appserver. py

linux - 使用 SED 获取大型文本文件的最后 n 行

sed - 如何从文本文件中删除多行,包括匹配的行?

windows - "if exist"命令在 Windows 批处理脚本中如何工作?

python - 将整数从列表解析为软件命令行

c++ - VHD 无法在 hyper V 中启动

windows - Python 中的字符串到日期格式为 DD/MM/YYYY - 葡萄牙语