1
我有一个包含等数据日志文件,这样的诗句:解析文本文件行
2012-05-23T20:52:11+00:00 heroku[router]: GET myapp.com/practitioner_activities/10471/edit dyno=web.2 queue=0 wait=0ms service=866ms status=200 bytes=48799
2012-05-23T20:52:46+00:00 heroku[router]: GET myapp.com/users/sign_out dyno=web.1 queue=0 wait=0ms service=20ms status=302 bytes=88
2012-05-23T20:52:46+00:00 heroku[router]: GET myapp.com/ dyno=web.13 queue=0 wait=0ms service=18ms status=200 bytes=4680
2012-05-23T20:53:04+00:00 heroku[router]: POST myapp.com/p/ENaCXExu7qNEqzwYYyPs dyno=web.5 queue=0 wait=0ms service=207ms status=302 bytes=119
2012-05-23T20:53:04+00:00 heroku[router]: GET myapp.com/practitioner_activities/welcome dyno=web.3 queue=0 wait=0ms service=57ms status=200 bytes=5061
2012-05-23T20:53:04+00:00 heroku[router]: GET myapp.com/assets/application-print-715276cc0b76d0d82db3ab5866f22a23.css dyno=web.14 queue=0 wait=0ms service=9ms status=200 bytes=76386
我想解析并将其转储到一个文件,我可以用Excel打开分析。我需要小时,分钟,动词(GET或POST),url和'service ='时间。
例如,对于上面的第一行:
2012-05-23T20:52:11+00:00 heroku[router]: GET myapp.com/practitioner_activities/10471/edit dyno=web.2 queue=0 wait=0ms service=866ms status=200 bytes=48799
我期望的输出看起来是这样的:
"20", "52", "GET", "myapp.com/practitioner_activities/10471/edit", "866"
我会怎么做这awk
或短的红宝石脚本?
有很大帮助,谢谢。 –
很高兴我可以帮忙:-) – Steve
你可以使用'ORS =“\”\ n“'和'print'用逗号(而不是明确地说'OFS',但是你仍然会设置'OFS' )而不是'printf'(因为你没有使用格式化字符串),或者你可以'printf'\“%d”OFS“%d”OFS“%s”OFS“%s”OFS“%d \” \ n“,substr($ 1,length($ 1) - 13,2),substr($ 1,length($ 1) - 10,2),$ 3,$ 4,substr(array [2],0,length(array [2 ]) - 2)'将表示和数据分开,在最后一种情况下,你可以使用比OFS更短的变量名,使用'length'并不是必须的,时间戳是固定长度的依靠... –