You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed为每个单词的前两个字母添加HTML粗体标签?

如何使用sed为每个单词的前两个字母添加HTML粗体标签?

哈哈,我太懂你遇到的这个坑了!你写的正则逻辑本身没问题,但sed默认用的是基础正则表达式(BRE),和你常用的扩展正则(ERE)规则不一样——在BRE里,像{1,2}这种量词是需要转义的,不然sed会把{和}当成普通字符处理,自然匹配不到内容啦。

你之前的单个字母命令能生效,是因为\w后面没有量词,不需要转义,BRE能正常识别单个单词字符。

解决方法有两种,选哪个都行:

方法1:给BRE里的量词转义

把{1,2}改成\{1,2\},命令就变成:

sed -e 's/\(\b\w\{1,2\}\)/<b>\1<\/b>/g' test.txt > test.html

方法2:启用扩展正则表达式(ERE)

用-E选项让sed切换到ERE模式,这样就不用转义{}和括号了,命令更简洁:

sed -E 's/\b(\w{1,2})/<b>\1<\/b>/g' test.txt > test.html

用这两个命令测试你的输入this is a test,就能得到你想要的结果:

<b>th</b>is <b>is</b> <b>a</b> <b>te</b>st

另外补充一点:如果你的文本里有特殊单词(比如带连字符的),可能需要调整\b的匹配逻辑,但针对普通空格分隔的单词,上面的命令完全够用~

备注:内容来源于stack exchange,提问作者roediGERhard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:19:50