我有一些文字,例如:
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