Sed:替换文本保留数字出现

Sed:替换文本保留数字出现

我有一些文字,例如:

Blablabla <b>[intlink id="</b>2204<b>" type="page"] Blalala

我想替换它以删除</b><b>,保留id="number".所以结果应该是这样的:

Blablabla <b>[intlink id="2204" type="page"] Blalala

我尝试:

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="{1}"@g' ~/edit.txt
Blablabla <b>[intlink id="{1}" type="page"] Blalala

我也尝试:

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="\\1"@g' ~/edit.txt

但我得到:

Blablabla <b>[intlink id="\1" type="page"] Blalala

那么,如何将 id 号码文本保留在正则表达式数字中呢?

答案1

\1是引用捕获组 1 的正确语法;\\1意味着您想要文字文本\1。因此更改\\1\1,然后您需要将您实际想要捕获的部分放在括号内。这应该有效:

sed -i 's@id="</b>\([[:digit:]]\+\)<b>"@id="\1"@g' ~/edit.txt

相关内容