当前位置:  技术问答>linux和unix

帮忙解析下这段日志,awk或者sed。

    来源: 互联网  发布时间:2017-02-02

    本文导语:  -  113.133.123.123  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab122|a12|sd1223d|324&e=2321" -  219.114.114.123  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab12|2|asd|324&e=2321" 119.41.13.17  113.31.123.123  20...


-  113.133.123.123  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab122|a12|sd1223d|324&e=2321"
-  219.114.114.123  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab12|2|asd|324&e=2321"
119.41.13.17  113.31.123.123  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab|122|asd|324&e=2321"
-  211.139.21.197  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab1|22|2d|324&e=2321"
-  112.65.123.232  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|a222|asd|324&e=2321"
221.21.11.121  113.31.1.27  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab|asd|324&e=2321"


字段用两个空格分隔。
以下是一行:
-  113.133.123.123  2012-02-10 14:00:03  "GET http://stat.abc.com:3128/aop?a=123&b=23&c=24d=200|ab122|asd|324&e=2321"


我想要的结果如下,用tab分隔。
ip+"t"+a+"t"+ b+"t"+ c+"t"+ 200+"t"+ab122|asd+"t"+324+"t"+e
红色部分是d参数解析出来的。
ip;有两个ip的,只取第一个ip,第一个为“-”取第二个ip

求帮忙,我就会分割出来,分出来的就不会了。求个完整的




|
一个awk脚本,一堆sub搞定

# cat ./parse.awk 
#!/usr/bin/awk -f
BEGIN {
FS="  |="
}
{
ip=$1
if (ip == "-")
ip = $2
gsub(/[^0-9]/, "", $5)
gsub(/[^0-9]/, "", $6)
gsub(/[^0-9]/, "", $7)
gsub(/[^0-9]/, "", $9)

n=split($8, d, "|")
gsub(/[^0-9]/, "", d[n])
sub(/[0-9]*|/, "", $8)
sub(/|[0-9]*&e$/, "", $8)
print ip,$5,$6,$7,d[1],$8,d[n],$9
}

楼主给出的数据文件存为data,结果如下

# ./parse.awk data
113.133.123.123 123 23 24 200 ab122|a12|sd1223d 324 2321
219.114.114.123 123 23 24 200 ab12|2|asd 324 2321
119.41.13.17 123 23 24 200 ab|122|asd 324 2321
211.139.21.197 123 23 24 200 ab1|22|2d 324 2321
112.65.123.232 123 23 24 200 a222|asd 324 2321
221.21.11.121 123 23 24 200 ab|asd 324 2321

|
写了一部分看看。
$ sed -r -n '/^-.*$/s/^.*(([0-9]{3}(.|b)){4}).*a=([0-9]+)&b=([0-9]{2})&c=([0-9]+)d=([0-9]+)|(.*)|([0-9]{3}).*$/1 2 3 5 6 7 8 9/p' file
113.133.123.123 123  23 24 200 ab122|a12|sd1223d 324
219.114.114.123 123  23 24 200 ab12|2|asd 324

    
 
 

您可能感兴趣的文章:

  • 请问各位:我用SUN公司的JAXP开发包解析XML文档,可不知道对XML解析后如何将结果写回文件中。请各位熟悉Java和XML的高手帮忙。
  • 请帮忙解析tomcat错误
  • 帮忙解析一下这个正则表达式
  • 关于域名或DNS或解析的问题,请帮帮忙
  • 帮忙用awk解析一下以下字符串的表达式 多谢 急~
  • 牛人来帮忙解析一个shell脚本(用于统计一个进程的内存使用情况)
  • 哪位帮忙把这个汇编宏,解析一下?
  • Linux内存线性地址空间布局解析---的一些疑惑,大家帮忙解释解释
  • bind反向解析问题,已经弄了我很久了,一直找不到问题,请高手帮帮忙呀
  • 日志问题!高手帮忙!
  • ¥¥:-)给分请教:linux下的邮件发送日志是什么文件??我是用php的mail()函数的。急盼!各位仁兄请帮忙!!
  • 大家帮忙我诊断一下我的NameServer,日志里有大量的update 'domain1.com/IN' denied和lame server resolving。
  • 自己写的一个日志类出现BUG,求帮忙查找原因
  • 分区变为只读的了,帮忙看看日志是什么原因引起的。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 努力努力再努力,帮忙帮忙来帮忙!
  • 在servlet中有一个关于单引号输出的问题,请大家帮忙,帮忙,帮帮忙!!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 帮忙帮忙如何设置变量pathclass
  • 没人帮忙吗?我想用JAVA编一个像WINDOW中的画图软件,现在出现了如下问题,请各位老哥老姐帮帮忙
  • 帮帮忙!SCO OpenServer 5.0.5 的root用户口令丢了,怎么找回来啊,帮帮忙!!!!!!
  • 我用smartupload组件遇到问题了,请帮忙!!
  • webmail问题,请高手帮忙!!!谁会使用IMP 3.0????!!!
  • 脚本问题,帮忙
  • 高手帮忙解释
  • 求教求教,shell问题...各位大哥,帮忙下
  • 关于程序移植,请知道的帮忙,分会加的
  • DELL服务器,安装RedHat EAS3.0,装完了,连不上SSH。。。。。哪位大虾帮忙!!急啊 !!!!
  • 关于聊天室的若干疑问!!!请各位大虾帮忙!
  • 有个问题?请帮忙!
  • 请求各位帮忙,关于绘制图像
  • 关于全选的问题大家帮忙看看~
  • 帮忙找个工作。
  • 请帮忙推荐几个下载java电子书的网站,35分献上!
  • 我怎么不能编译servlet?请帮忙!!!谢谢!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3