我有一个这样的字符串:
33 00 4b 46 ff ff 03 10 30 t=25562
我只对 t =
后的最后五位数感兴趣我怎样才能用正则表达式得到这个数字?
我试过了grep t=.....
但是我在开头还得到了包括 t = 在内的所有字符,我想放弃它?
在找到五位数后,我想将其除以1000
。所以在上面提到的情况下,数字为25.562
。用grep和正则表达式可以实现吗?
感谢您的帮助。
答案 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