【发布时间】:2013-06-25 10:38:25
【问题描述】:
在 GNU sed(以及我所知道的几乎所有其他发行版)中:
SET VAR=C:\nyc
sed "s/PATH/%VAR%/g" file.txt
导致任何出现的 PATH 都被替换为新行,后跟“yc”。在我的情况下,VAR 始终是用户提供的文字(它是 Windows 路径)。如何禁用'\'的默认解释? (我知道一些技巧,比如将 VAR 保存在文件中,并将 VAR 中的所有“\”替换为“\\”,然后将其传递给 sed)
【问题讨论】:
-
为什么不用双反斜杠替换所有反斜杠?
-
是的,这完全有可能。问题是我有很多这样的变量,它们也用于“复制”命令,所以我需要为每个变量引入临时值和丑陋的东西。我只是想知道这在单个 sed 命令中是否可行。
-
这个问题似乎是特定于 windows/shell 的,因为在我所知道的任何 shell 中都不会扩展 %VAR% ,并且扩展 "$VAR" 将导致
sed省略 "C:nyc " 而不是换行符。
标签: windows sed cmd escaping pattern-matching