正则expression式和sed命令:echo 1234567890 | sed's /((?<= \ d)\ d {3})* \ b / TEST /

源码是1234567890正则expression式((?<=\d)\d{3})*\b可以匹配: 234567890 ,所以我认为sed应该用TESTreplace234567890 ,但结果是: 1234567890 ,为什么?

sed不支持look-behind。 你可以尝试(超级sed),它支持perl模式,(-R),那么你可以传递perl风格的正则表达式。 例如向前看/在后面。

请参阅功能列表:

https://launchpad.net/ssed

你需要重写正则表达式而不是向后看:

 s/(\d)(?:\d{3})*\b/\1TEST