例如我有字符串
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}"
我认为它会返回eeee050012345
和eeee080012345678
,但会失败。
答案 0 :(得分:1)
你不能用正则表达式(任何风格)来做到这一点。但您可以使用awk
,如下所示:
awk '{len=int(substr($0,5,2));print substr($0,0,len+8)}' file
我们首先将字符串的长度与字符5到7分开。使用len
,我们可以再次使用substr()
来提取感兴趣的字符串。我们正在8
添加len
,因为eeee0500
有8
个字符。
输出:
eeee050012345
eeee080012345678