替换同一行中多个重复模式内的文本

替换同一行中多个重复模式内的文本

我有这样的东西;

I like reading **books** and taking **notes**

我试图得到这样的东西;

I like reading <b>books</b> and taking <b>notes</b>

尝试做;

sed 's/\*\*\(.*\)\*\*/<b>\1<\/b>/g' a.txt

这返回;

I like reading <b>books** and taking **notes</b>

它环绕整条线。有什么办法可以绕过它吗?

注意:我使用的是 GNU 版本的 sed

答案1

您可以使用 GNU 执行以下操作sed

$ sed 's:\*\*\([^*]*\)\*\*:<b>\1</b>:g' a.txt 
I like reading <b>books</b> and taking <b>notes</b>

\*\*\([^*]*\)\*\*模式捕获之间的字符串,该**...**字符串不是通配符*。最后,您可以在标签之间替换捕获的组本身。

相关内容