我正在尝试获取一个sed
命令来格式化(HTML)纯文本输入中每个单词的前两个字母。我想输入纯文本,并用标签将前两个字母标记为粗体,<b>
以形成一个表示相同文本但格式如下所示的 html 文件:
https://www.reddit.com/media?url = https%3A%2F%2Fi.redd.it%2Fzwp75sv6dgqb1.png
不幸的是,我无法获得前两个字母,但它仅适用于第一个字母。所以我得到了这个:
sed -e 's/\(\b\w{1,2}\)/<b>\1<\/b>/g' test.txt > test.html
但它没有按预期工作
input: this is a test
output: this is a test
intended: <b>th</b>is <b>is</b> <b>a</b> <b>te</b>st
我不知道为什么,但这个命令确实可以只标记第一个字母:
sed -e 's/\(\b\w\)/<b>\1<\/b>/g' test.txt > test.html
为什么不是另一个我在 {1,(or)2} 时间场合标记 \w(ord 字符) 的地方,即使 regex101 显示我应该是对的(https://regex101.com/r/hBb6Yt/4) ?
像
(capturegroup)
,{min,max}
是一个扩展的正则表达式功能,并且必须使用反斜杠,sed
除非您sed
有并且使用了扩展正则表达式的选项(GNU-E -r --regexp-extended
;BSD/Mac?-E
)。此外,您也不需要此处的捕获组: