为Windows转义sed中的双引号



我试图在Windows.bat文件中使用sed将以下内容写入文件:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Test|AnyCPU'">

我在做这件事的时候遇到了一个问题,这个问题是,根据这个答案,在Windows中,双引号转义取决于程序的实现。因此,在sed for Windows上,将序列写入文本文件是一件非常头疼的事情。

编辑:请注意,这个问题不是关于如何在批处理中转义双引号,而是关于如何在适用于Windows的sed中转义双括号,因此这个答案不能解决这个问题。

如果有人想知道如何解决这个问题,请参阅公认的答案。

让我们看看我是如何解决这个问题的。这是测试批处理文件,我将在下面解释它的含义:

SET ConfigurationName="Test"
sed "1 a  <PropertyGroup Condition=""'$(Configuration)|$(Platform)'" == "'%ConfigurationName%|AnyCPU'"">" "C:Usersxoutputfile.txt" -i

在Windows'sed中,双引号的转义是使用"完成的。通常,至少在Visual Studio代码的终端中,我可以简单地用单引号为sed编写参数,但在.bat文件中不能这样做。这意味着我需要转义双引号。

正如你所看到的,需要""序列来转义"字符,然后继续在文件中写入。如果你不这样做,那么$将被解释为一个新命令,Windows将无法识别它。

另一件需要提及的事情是,如果在sed中用双引号写<>字符,则不需要转义。

最新更新