忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 411 | 回复: 9

[文本处理] 处理日志 [复制链接]

论坛徽章:
0
发表于 2017-11-08 19:01 |显示全部楼层
本帖最后由 我是个读书人丶 于 2017-11-09 10:33 编辑

[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&cmd=get_config&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&cmd=get_epg&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?APIVersion=2.2.0&Action=EPGEntrance&address=&Type=android_tv&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?address=&APIVersion=2.2.0&Type=android_tv&Action=EPGEntrance&cmd=get&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/plugisu/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&cmd=get_config&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Type=android_tv&Action=EPGEntrance&address=&APIVersion=2.2.0&cmd=get_config&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=DDEFC&address=&APIVersion=2.2.0&Type=android_tv&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&cmd=get_config&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&cmd=get_config&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?APIVersion=2.2.0&Action=EPGEntrance&address=&Type=android_tv&cmd=get_add&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&cmd=get_config&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Action=EPGEntrance&address=&APIVersion=2.2.0&Type=android_tv&cmd=get_gcc&RightId=00
[29/Sep/2017:23:59:59 +0800]|GET /tv_api/api/?Type=android_tv&Action=EPGEntrance&address=&APIVersion=2.2.0&RightId=00

如以上日志, 求只过滤出带有  接口|Action=的值|cmd=的值,如果日志里没有cmd,那就是cmd=
最后处理日志的结果是如下这样的:
/tv_api/api/|Action=EPGEntrance|cmd=get_config
/tv_api/api/|Action=DDEFC|cmd=
/tv_api/plugisu/|Action=EPGEntrance|cmd=get_config
/api/api/Action=EPGEntrance|cmd=get_epg
......
日志的格式有点乱,Action与cmd字段不在同一列。所以不太会用awk进行过滤。awk过滤或者使用更好的方法。求各位大神帮忙。谢谢!



论坛徽章:
0
发表于 2017-11-09 15:41 |显示全部楼层
你机子上能装powershell吗?若愿意尝试我可以给你写脚本。

问:目前哪些版本linux能安装上powershell?
答:
◦MAC OS X 10.11
◦Ubuntu 14.04/16.04/17.04
◦Debian8.x/9.x
◦CentOS 7.x/RHEL 7.x/Fedora 25/Fedora 26
◦open SUSE 42及以上/SUSE Linux Enterprise Server 12 SP2
◦LINUX发行版中,安装容器dockerd,docker中运行powershell。
◦Arch Linux (archl inux 没有版本号)
◦Linux AppImage 容器(portable application single binary)  https://github.com/probonopd/AppImageKit


安装方法:
https://github.com/PowerShell/Po ... stallation/linux.md

论坛徽章:
15
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06IT运维版块每日发帖之星
日期:2016-02-27 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-31 10:37:3615-16赛季CBA联赛之同曦
日期:2016-01-24 17:51:44狮子座
日期:2016-01-11 11:25:34酉鸡
日期:2016-01-11 11:24:2415-16赛季CBA联赛之北控
日期:2016-01-02 13:16:52
发表于 2017-11-09 15:41 |显示全部楼层
  1. # awk -F '[ ?]' '{match($0,/Action=[^&]+/,a);match($0,/cmd=[^&]+/,b);print $3,a[0],b[0]==""?"cwd=":b[0]}' OFS="|" file  
  2. /tv_api/api/|Action=EPGEntrance|cwd=
  3. /tv_api/api/|Action=EPGEntrance|cmd=get_config
  4. /api/api/|Action=EPGEntrance|cmd=get_epg
  5. /tv_api/api/|Action=EPGEntrance|cwd=
  6. /tv_api/api/|Action=EPGEntrance|cmd=get
  7. /tv_api/plugisu/|Action=EPGEntrance|cmd=get_config
  8. /tv_api/api/|Action=EPGEntrance|cmd=get_config
  9. /tv_api/api/|Action=DDEFC|cwd=
  10. /tv_api/api/|Action=EPGEntrance|cmd=get_config
  11. /tv_api/api/|Action=EPGEntrance|cwd=
  12. /tv_api/api/|Action=EPGEntrance|cmd=get_config
  13. /tv_api/api/|Action=EPGEntrance|cmd=get_add
  14. /tv_api/api/|Action=EPGEntrance|cmd=get_config
  15. /tv_api/api/|Action=EPGEntrance|cmd=get_gcc
  16. /tv_api/api/|Action=EPGEntrance|cwd=
复制代码

论坛徽章:
0
发表于 2017-11-09 15:53 |显示全部楼层
回复 2# 本友会机友会摄友会

谢谢。现在着急要用这个。所以,还是考虑使用awk之类的处理方法。谢谢!

论坛徽章:
0
发表于 2017-11-09 15:53 |显示全部楼层
回复 3# baby_神

谢谢大神。我用这个试试看看能不能对应我的所有的日志。谢谢。

论坛徽章:
0
发表于 2017-11-09 15:57 |显示全部楼层
本帖最后由 我是个读书人丶 于 2017-11-09 15:59 编辑

回复 3# baby_神

可以用。谢谢

论坛徽章:
15
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06IT运维版块每日发帖之星
日期:2016-02-27 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-31 10:37:3615-16赛季CBA联赛之同曦
日期:2016-01-24 17:51:44狮子座
日期:2016-01-11 11:25:34酉鸡
日期:2016-01-11 11:24:2415-16赛季CBA联赛之北控
日期:2016-01-02 13:16:52
发表于 2017-11-09 15:58 |显示全部楼层
回复 6# 我是个读书人丶

是不要POST?

论坛徽章:
0
发表于 2017-11-09 16:04 |显示全部楼层
回复 7# baby_神

可以。刚刚试了一下。单独拿了一条
[29/Sep/2017:23:59:59 +0800]|POST /cards_api/api HTTP/1.1|200|111|-|Dalvik/1.6.0 (Linux; U; Android 4.0.3; IP506H_54U3 Build/IML74K)|-|Action=log&address=&APIVersion=2.2.0&cmd=intranet_data&copyRightId=26
这样的日志

也可以输出
/cards_api/api|Action=log|cmd=intranet_data

像这样的结果。

非常感谢。 能否讲解一下。awk真的太深了,只学了点基础完全不够用啊。

论坛徽章:
15
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06IT运维版块每日发帖之星
日期:2016-02-27 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-31 10:37:3615-16赛季CBA联赛之同曦
日期:2016-01-24 17:51:44狮子座
日期:2016-01-11 11:25:34酉鸡
日期:2016-01-11 11:24:2415-16赛季CBA联赛之北控
日期:2016-01-02 13:16:52
发表于 2017-11-09 16:40 |显示全部楼层
回复 8# 我是个读书人丶

前面的match函数没什么好讲的,百度一下好多讲match的
后面的b[0]==""?"cwd=":b[0]  用的是三目运算符  ? :   
意思就是 如果 b[0] 等于空,就是cwd= ,否则 还是b[0]  , if(b[0]=="") {print "cwd="} else {print b[0]}

OFS="|"  这个是输出分隔符,默认是空格


可以加群 219636001,共同学习,共同探讨

论坛徽章:
0
发表于 2017-11-15 18:20 |显示全部楼层
回复 9# baby_神

谢谢大神!学习了。非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP