我有:
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
为&