grep:如何使用反向引用作量词?

时间:2016-02-23 11:37:10

标签: regex grep

例如我有字符串

aeb107001234567
eeee**05**00**12345**00OTHERDATA000
eeee**08**00**12345678**00OTHERDATA
eeee是关键 05是字符串的长度 一行中的所有字符串,(避难所或其他分隔符,它的原始数据)

我想获得在eeee之后定义的长度字符串:

12345
12345678

我尝试使用grep -E:

echo str | grep -o -E "eeee.(.)00.{\1}"

我认为它会返回eeee050012345eeee080012345678,但会失败。

1 个答案:

答案 0 :(得分:1)

你不能用正则表达式(任何风格)来做到这一点。但您可以使用awk,如下所示:

awk '{len=int(substr($0,5,2));print substr($0,0,len+8)}' file

我们首先将字符串的长度与字符5到7分开。使用len,我们可以再次使用substr()来提取感兴趣的字符串。我们正在8添加len,因为eeee05008个字符。

输出:

eeee050012345
eeee080012345678