我试图在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中用双引号写<
和>
字符,则不需要转义。