在开始t =之后找到整数

时间:2013-11-07 21:50:26

标签: regex grep

我有一个这样的字符串:

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

我只对 t =

后的最后五位数感兴趣

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

在找到五位数后,我想将其除以1000。所以在上面提到的情况下,数字为25.562。用grep和正则表达式可以实现吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分: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}'

答案 1 :(得分: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