- 80
- 0
问题: 取出日志中的 status 和 request_time的值:
此日志用脚本无法匹配出来:
{"@timestamp":"2018-03-30T19:24:26+08:00","server_addr":"172.31.0.24","remote_addr":"10.59.23.86","scheme":"https","host":"api.mycomapp.com","method":"GET","uri":"/app/global/2/android.json?mark=gif&version=96&app=&language=en","url":"/app/global/2/android.json","protocol":"HTTP/1.1","status":"200","size":10206,"request_time":"0.159","upstream_time":"0.159","upstream_addr":"192.31.2.78:80","referer":"-","agent":"Mozilla/5.0 (Linux; Android 6.0.1; SM-G900M Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 News/96 Android/96 AppFootball/96 SDK/23 PackageName/com.mycom.news","http_x_forwarded_for":"-","uuid":"@hu87x0VcRPqJ9SwLZtQVpJWArHrnN7xA/j0cHVxLDY/ZUVIxXhZn","authorization":"-","lang":"en-US","route_id":"4c64bfcc996f11381e19d85b2e8ce9f3","product":"mycom","subsys":"api","uuidx":"-","version_name":"2.6.2","package":"com.mycom.news","auid":"-"}
python代码如下:
#!/usr/bin/env python
import re
import sys
regex = re.compile(r'{".*"status":(\d+).*request_time":(\d+\.\d+)')
def process_line(line):
ro = regex.match(line)
if ro :
status , reqtime= ro.groups()
return status,reqtime
if __name__ == '__main__':
for line in sys.stdin:
print process_line(line)
如下方式执行:
# cat t.log |python logclean.py
None
可以匹配出来的日志:
{"@timestamp":"2018-03-30T18:31:27+08:00","server_addr":"192.31.3.181","remote_addr":"197.210.173.163","scheme":"http","host":"api.abccccdapp.com","method":"GET","uri":"/app/archives/info?id=614464&language=en","url":"/index.php","protocol":"HTTP/1.0","status":200,"size":390,"request_time":0.006,"upstream_time":"0.006","upstream_host":"127.0.0.1:9000","referer":"abccccd://v1/main/home/tablist/http://app.abccccdapp.com/navite?push","agent":"Mozilla/5.0 (Linux; Android 7.1.1; SM-C7108 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/59.0.3071.125 Mobile Safari/537.36 News/100 Android/100 App/100 SDK/25 PackageName/com.abccccd.news","xff":"197.21.173.163","uuid":"@nBFS5qbkHR3H0rJ2tFlR4cJsz","authorization":"-","lang":"en-US","route_id":"8c2352d0045f02c79722cb03261c0f88","sign":"MGD8xl2Ue6lagzzorNUnsCFNpsb7QcOVWf1QI="}
# cat 2.txt|python logclean.py
('200', '0.006')
正则没有匹配到,返回None,请问各位大神正则应该怎么写?谢谢
- 共 0 条
- 全部回答
-
失心瘋╰つ 普通会员 1楼
在Python中,你可以使用
re模块的search函数和match函数来取出两个数值。以下是一个简单的例子:```python import re
假设你有一个字符串,其中包含两个数值
s = "The price of the product is $20 and the price of the product is $15"
使用正则表达式匹配数字
match1 = re.search(r'\d+', s) match2 = re.search(r'\d+', s)
如果匹配成功,那么 match1 和 match2 就是两个匹配的数字
if match1: num1 = match1.group(0) num2 = match2.group(0) print("Number 1:", num1) print("Number 2:", num2) else: print("No match found")
if match2: num1 = match2.group(0) num2 = match2.group(0) print("Number 1:", num1) print("Number 2:", num2) else: print("No match found") ```
在这个例子中,我们首先使用
re.search函数在字符串中查找两个匹配的数字。如果找到匹配的数字,我们就可以使用group函数获取这些数字。如果没有找到匹配的数字,group函数会返回None。注意,这个例子假设你的字符串只包含两个数字。如果你的字符串中包含其他字符,你可能需要使用不同的正则表达式来匹配数字。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
