^ [:blank:]与sed中的点不匹配

Pes*_*The 3 linux bash sed

我的输入如下:

INa.aa ................... 2010年10月,此前美国业主未能偿还债务

我的目标是在以letter i/ 开头的每个单词周围加上括号I.所以我发出了一个命令:

sed 's/\<i[^[:blank:]]*\>/(&)/gi' input_data
Run Code Online (Sandbox Code Playgroud)

哪个返回了这个输出:

(INa.aa)................... 2010年10月之后(以前)美国的所有者未能偿还债务

我没有得到的是,为什么不^[:blank:]*包括之后的点INa.aa

谢谢你的任何建议.

Ben*_* W. 6

你使用\>"结束词"逃脱.单词边界定义为

左边的字符是"单词"字符,右边的字符是"非单词"字符,反之亦然

手册中(指\b).在这种情况下\>,"反之亦然"不适用.

什么是"单词"字符?

"单词"字符是任何字母或数字或下划线字符.

而"非字"则是其他所有.您希望期间和空白之间的边界匹配\>,但不会:期间和空白都是非单词字符.单词边界位于最后一个a和第一个之间..

as 之间的时段也被单词边界包围,但由于没有任何空白,所以它是匹配的一部分.

如果你想匹配下一个空白的所有内容,你可以跳过\>你的正则表达式.