2

我有一个这样的字符串:

33 00 4b 46 ff ff 03 10 30 t=25562

我只对t=之后最后的五位数字感兴趣

我怎样才能用正则表达式得到这个数字呢?我试过grep t=.....了,但我也得到了所有字符,包括开头的t=,我想放弃?

找到那个五位数后,我想将其除以1000。所以在上面提到的情况下,数字25.562。grep 和正则表达式可以做到这一点吗?

谢谢你的帮助。

4

2 回答 2

4

使用awk

echo '33 00 4b 46 ff ff 03 10 30 t=25562' | awk -F= '{print $2/1000}'

输出:

25.562

编辑

正如@anubhava在评论中指出的那样,上述假设=在之前的任何地方都不存在t=。如果不是这样的话,

echo '33 00 4b 46 ff ff 03 10 30 t=25562' | awk -F' t=' '{print $2/1000}'
于 2013-11-07T21:55:15.720 回答
0

这应该没问题。它只会t=在最后获得价值形式。OP 还发布了t=可能作为额外字符存在于行中间的内容,但您好只希望获得行尾的那个。

echo '33 00 4b 46 ff ff t=22 03 10 30 t=25562' | awk '{split($NF,a,"=");print a[2]/1000}'
25.562

另一种变化

echo '33 00 4b 46 ff ff t=22 03 10 30 t=25562' | awk 'END {print $0/1000}' RS==
25.562
于 2013-11-08T06:39:26.087 回答