免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3085 | 回复: 7
打印 上一主题 下一主题

再次冒砖泪求日志文本处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-14 10:08 |只看该作者 |倒序浏览
日志文本如下:
  1. Sun Jan 31 00:00:01 2010
  2.         User-Name = "test0023"
  3.         NAS-Port = 17827544
  4.         NAS-IP-Address = 10.60.255.1
  5.         Framed-IP-Address = 10.72.3.127
  6.         NAS-Identifier = "TEST"
  7.         Acct-Status-Type = Stop
  8.         Acct-Delay-Time = 0
  9.         Acct-Input-Octets = 320782848
  10.         Acct-Output-Octets = 1110648668
  11.         Acct-Session-Id = "TEST01100000001752ed887723033"
  12.         Acct-Authentic = RADIUS
  13.         Acct-Session-Time = 26110
  14.         Acct-Input-Packets = 1190968
  15.         Acct-Output-Packets = 1213428
  16.         Acct-Terminate-Cause = User-Request
  17.         Acct-Input-Gigawords = 0
  18.         Acct-Output-Gigawords = 0
  19.         Event-Timestamp = "Jan 31 2010 07:45:43 EAT"
  20.         NAS-Port-Type = Ethernet
  21.         Calling-Station-Id = "00:02:3f:07:48:11"
  22.         NAS-Port-Id = "slot=1;subslot=1;port=0;vlanid=1752;"
  23.         Acct-Tunnel-Packets-Lost = 0
  24.         Service-Type = Framed-User
  25.         Framed-Protocol = PPP
  26.         SK-Attr-60 = 0x31302e37322e332e3132372030303a30323a33663a30373a34383a3131
  27.         SK_Input_Peak_Rate = 1048576
  28.         SK_Input_Average_Rate = 1048576
  29.         SK_Out_Peak_Rate = 10485760
  30.         SK_Out_Average_Rate = 10485760
  31.         SK-Attr-22 = 0x00000000
  32.         SK-Attr-26 = 0x000059f9
  33.         SK-Attr-138 = 0x71696e6764616f6d656469612e636f6d
  34.         Client-IP-Address = 10.60.255.1
  35.         Acct-Unique-Session-Id = "3b3c5639bdf52982"
  36.         Timestamp = 1264867201

  37. Sun Jan 31 00:00:02 2010
  38.         User-Name = "test0013"
  39.         NAS-Port = 17827764
  40.         NAS-IP-Address = 10.60.255.1
  41.         Framed-IP-Address = 10.72.1.131
  42.         NAS-Identifier = "TEST"
  43.         Acct-Status-Type = Start
  44.         Acct-Delay-Time = 0
  45.         Acct-Session-Id = "TEST011000000019720ed8f624654"
  46.         Acct-Authentic = RADIUS
  47.         Event-Timestamp = "Jan 31 2010 07:45:44 EAT"
  48.         NAS-Port-Type = Ethernet
  49.         Calling-Station-Id = "00:10:5c:e8:77:a4"
  50.         NAS-Port-Id = "slot=1;subslot=1;port=0;vlanid=1972;"
  51.         Acct-Tunnel-Packets-Lost = 0
  52.         Service-Type = Framed-User
  53.         Framed-Protocol = PPP
  54.         SK-Attr-60 = 0x31302e37322e312e3133312030303a31303a35633a65383a37373a6134
  55.         SK_Input_Peak_Rate = 1048576
  56.         SK_Input_Average_Rate = 1048576
  57.         SK_Out_Peak_Rate = 10485760
  58.         SK_Out_Average_Rate = 10485760
  59.         SK-Attr-22 = 0x00000000
  60.         SK-Attr-26 = 0x0000604e
  61.         SK-Attr-138 = 0x71696e6764616f6d656469612e636f6d
  62.         Client-IP-Address = 10.60.255.1
  63.         Acct-Unique-Session-Id = "2c32637ece099079"
  64.         Timestamp = 1264867202
复制代码
要获取User-Name,Framed-IP-Address,NAS-Identifier,Acct-Status-Type,Acct-Session-Time,
Calling-Station-Id,Acct-Unique-Session-Id,(Timestamp-Acct-Session-Time),Timestamp的值,如果行中没有Acct-Session-Tim则将该值补为0,即得到如下结果:
  1. test0023  10.72.3.127  TEST  Stop  26110   00:02:3f:07:48:11   3b3c5639bdf52982  2010-01-30 16:44:51 2010-01-31 00:00:01
  2. test0013  10.72.1.131  TEST  Start   0          00:10:5c:e8:77:a4   2c32637ece099079 2010-01-31 00:00:02  2010-01-31 00:00:02
复制代码
请问如何实现?谢谢!!!

评分

参与人数 1可用积分 -1 收起 理由
jason680 -1 文不对题

查看全部评分

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
2 [报告]
发表于 2011-09-14 10:14 |只看该作者
设RS为Sun Jan 31 00:00:02 2010

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
3 [报告]
发表于 2011-09-14 10:17 |只看该作者
回复 1# moshangxie


    http://blog.chinaunix.net/space. ... o=blog&id=34034
和这个类似,FYI

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2011-09-14 10:36 |只看该作者
花点时间学下awk很有必要

论坛徽章:
0
5 [报告]
发表于 2011-09-14 11:41 |只看该作者
本帖最后由 ywlscpl 于 2011-09-14 11:53 编辑

回复 1# moshangxie
  1. awk 'BEGIN{a[1]="User-Name";a[2]="Framed-IP-Address";a[3]="NAS-Identifier";a[4]="Acct-Status-Type";a[5]="Acct-Session-Time";a[6]="Calling-Station-Id";a[7]="Acct-Unique-Session-Id";a[8]="Acct-Session-Time";a[9]="Timestamp"}{for (i=1;i<=9;i++) if ($1==a[i]) {gsub(/"/,"",$NF);b[i]=$NF}}$1=="Timestamp"{for (i=1;i<=9;i++) {if (i==5&&!b[i]) b[i]=0;if (i==8) if (!b[i]) b[i]=b[9];else b[i]=b[9]-b[i];if (i==8||i==9) b[i]=strftime("%Y-%m-%d %H:%M:%S",b[i]);printf b[i]"\t"}print "";delete b}' file
复制代码
  1. ywlscpl@ubuntu:~$ awk 'BEGIN{a[1]="User-Name";a[2]="Framed-IP-Address";a[3]="NAS-Identifier";a[4]="Acct-Status-Type";a[5]="Acct-Session-Time";a[6]="Calling-Station-Id";a[7]="Acct-Unique-Session-Id";a[8]="Acct-Session-Time";a[9]="Timestamp"}{for (i=1;i<=9;i++) if ($1==a[i]) {gsub(/"/,"",$NF);b[i]=$NF}}$1=="Timestamp"{for (i=1;i<=9;i++) {if (i==5&&!b[i]) b[i]=0;if (i==8) if (!b[i]) b[i]=b[9];else b[i]=b[9]-b[i];if (i==8||i==9) b[i]=strftime("%Y-%m-%d %H:%M:%S",b[i]);printf b[i]"\t"}print "";delete b}' file
  2. test0023        10.72.3.127     TEST    Stop    26110   00:02:3f:07:48:11      3b3c5639bdf52982 2010-01-30 16:44:51     2010-01-31 00:00:01
  3. test0013        10.72.1.131     TEST    Start   0       00:10:5c:e8:77:a4      2c32637ece099079 2010-01-31 00:00:02     2010-01-31 00:00:02
  4. ywlscpl@ubuntu:~$ awk --version
  5. GNU Awk 3.1.6
  6. Copyright (C) 1989, 1991-2007 Free Software Foundation.
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
6 [报告]
发表于 2011-09-14 11:45 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2011-09-14 11:56 |只看该作者
回复 6# rdcwayx


    需求不一样,见谅。

论坛徽章:
0
8 [报告]
发表于 2011-09-15 11:25 |只看该作者

  1. perl -ne '
  2. chomp;
  3. s/^\s*//;
  4. if(/^User/){$a{"Acct-Session-Time"}=0;}
  5. if(/(.*?)\s*=\s*("?)(.+)\2/){$a{$1}=$3;}
  6. if(/^TimeStamp/i){printf "%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\t%-10s\n"
  7. ,$a{"User-Name"}
  8. ,$a{"Framed-IP-Address"}
  9. ,$a{"NAS-Identifier"}
  10. ,$a{"Acct-Status-Type"}
  11. ,$a{"Acct-Session-Time"}
  12. ,$a{"Calling-Station-Id"}
  13. ,$a{"Acct-Unique-Session-Id"}
  14. }' data1

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP