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

时间:2012-02-14 12:42:32

标签: regex linux sed

来源为1234567890,正则表达式((?<=\d)\d{3})*\b可匹配:234567890,因此我认为sed应将234567890替换为TEST,但结果是:1234567890,为什么?

2 个答案:

答案 0 :(得分:1)

sed不支持

后视。 你可以尝试ssed(super sed),它支持perl模式,( - R)然后你可以将perl样式正则表达式传递给它。例如向前/向后看。

查看功能列表:

https://launchpad.net/ssed

答案 1 :(得分:0)

你需要在没有lookbehind的情况下重写正则表达式:

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