在 Windows 上使用 sed 在正则表达式中包含“

在 Windows 上使用 sed 在正则表达式中包含“

我有:

echo finally came. 34^"This is the account of | sed "s:[1-9][0-9]["]:<a name=\"top\">&</a>:g"

我需要

finally came. <a name="top">34"</a>This is the account of

我尝试过sed "s:[1-9][0-9][\"]:<a name=\"top\">&</a>:g",但"s:[1-9][0-9][^"]:<a name=\"top\">&</a>:g"没有成功

如何使用 sed 在 cmd 中实现此目的。我已经在 Windows 中安装了 sed,但我需要匹配"右侧有 的数字。

答案1

我从未sed在 Windows 中使用过,但从您的问题中我可以看出,转义的工作方式似乎与 *nix 中的类似。您已经"在替换中转义了,为什么不在模式本身中做同样的事情呢?

sed "s:[1-9][0-9]\":<a name=\"top\">&</a>:g"

此外,基于您使用的 shell 与经典 *nix shell 类似的假设,我将在表达式中使用单引号而不是双引号sed,这意味着双引号不需要转义:

sed 's:[1-9][0-9]":<a name="top">&</a>:g'

答案2

这就是

gnuwin32 sed。

C:\Users\user>echo finally came. 34^"This is the account of | sed "s:[1-9][0-9 ][\"]:^<a name=\"top\"^>\0"</a>":g"
finally came. <a name="top">34"</a>This is the account of

C:\用户\用户>

在上面的窗口示例中,如果您用 替换,\0它也能起作用。^&

你也可以"</a>"^</a^> 哪个来替换

对于 cygwin

user@comp ~
$ echo 终于来了。34\"这是 | sed "s:[1-9][0-9 ][\"]:\0:g" 的解释`

finally came. <a name="top">34"</a>This is the account of

你可以在上面的 cygwin 示例中替换\0&

相关内容