当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : awk问题请教
帖子发表于 : 2009-10-25 20:53 

注册: 2006-11-19 9:28
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
假设一个日志文件有两个字段,访问的时间和访问的url:
20091022002136;/index.html
20091022002136;/welcome.html
......
要输出每行的url,下一行的时间减去当前行的时间

getline好像也处理不了?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-10-25 21:13 
头像

注册: 2009-05-20 19:32
帖子: 2462
送出感谢: 0 次
接收感谢: 2
; 分割 先存起 延后输出


_________________
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
irc://irc.freenode.net/ubuntu-cn


页首
 用户资料  
 
3 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-10-25 21:19 

注册: 2006-11-19 9:28
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
O_O_BOT 写道:
; 分割 先存起 延后输出

不懂,能说详细点吗?


页首
 用户资料  
 
4 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-10-25 23:20 
头像

注册: 2006-08-24 21:25
帖子: 256
送出感谢: 0 次
接收感谢: 0 次
代码:
i=1
cat file |while read $j
do
  if  [ $i -eq 1 ]
   then
    old =`echo $j|awk -F ";"{print $1} `
    oldurl=`echo $j|awk -F ";"{print $2} `
    i=2
 else
   new=`echo $j|awk -F ";"{print $1} `
   newurl=`echo $j|awk -F ";"{print $2} `
   y=`expr  ${new:0:4} - ${old:0:4}`
   m=`expr  ${new:4:2} - ${old:4:2}`
   d=`expr  ${new:6:2} - ${old:6:2}`
   #还有时分秒的自己弄
   echo "$oldurl和$newurl相差$y年$m月$d天"
   old=$new
   oldurl=$newurl
  fi
done


处理时间的减法不知道怎么弄,用了个笨办法,不知道谁指点一下。楼主就将就着看吧,瞎写的,没测试。也就提供个思路


页首
 用户资料  
 
5 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-10-26 0:51 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
我也提供一个bash的时间减法:
代码:
d=20091022002136
date -d "${d:0:8} ${d:9:2}:${d:10:2}:${d:11:2}" +%s

得到 unix time 1256149273,然后使用减法……


页首
 用户资料  
 
6 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-11-09 15:18 

注册: 2006-11-19 9:28
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
xzap 写道:
代码:
i=1
cat file |while read $j
do
  if  [ $i -eq 1 ]
   then
    old =`echo $j|awk -F ";"{print $1} `
    oldurl=`echo $j|awk -F ";"{print $2} `
    i=2
 else
   new=`echo $j|awk -F ";"{print $1} `
   newurl=`echo $j|awk -F ";"{print $2} `
   y=`expr  ${new:0:4} - ${old:0:4}`
   m=`expr  ${new:4:2} - ${old:4:2}`
   d=`expr  ${new:6:2} - ${old:6:2}`
   #还有时分秒的自己弄
   echo "$oldurl和$newurl相差$y年$m月$d天"
   old=$new
   oldurl=$newurl
  fi
done


处理时间的减法不知道怎么弄,用了个笨办法,不知道谁指点一下。楼主就将就着看吧,瞎写的,没测试。也就提供个思路



这个倒是可以用,但是效率不高啊,现在每天的日志超过1G了,好长时间都解析不完


页首
 用户资料  
 
7 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-11-09 16:22 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
代码:
xiooli@XIOOLI> cat b
20091022002136;/index.html
20091022002137;/wel.html
20091022002145;/welc.html
20091022002187;/welco.html
20091022002189;/welcome.html
20091022002193;/welcome1.html
20091022002199;/welcome12.html
xiooli@XIOOLI> cat a.awk
{
   interval = $1 - crt_tm
   if(url)print interval,url
   url = $2
   crt_tm = $1
}
xiooli@XIOOLI> awk -F";" -f a.awk b
1 /index.html
8 /wel.html
42 /welc.html
2 /welco.html
4 /welcome.html
6 /welcome1.html


页首
 用户资料  
 
8 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-11-10 11:12 

注册: 2006-11-19 9:28
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
xiooli 写道:
代码:
xiooli@XIOOLI> cat b
20091022002136;/index.html
20091022002137;/wel.html
20091022002145;/welc.html
20091022002187;/welco.html
20091022002189;/welcome.html
20091022002193;/welcome1.html
20091022002199;/welcome12.html
xiooli@XIOOLI> cat a.awk
{
   interval = $1 - crt_tm
   if(url)print interval,url
   url = $2
   crt_tm = $1
}
xiooli@XIOOLI> awk -F";" -f a.awk b
1 /index.html
8 /wel.html
42 /welc.html
2 /welco.html
4 /welcome.html
6 /welcome1.html



:em11 谢谢!


页首
 用户资料  
 
9 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-11-10 12:08 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
代码:
$ echo '20091022002136;/index.html
20091022002137;/wel.html
20091022002145;/welc.html
20091022002187;/welco.html
20091022002189;/welcome.html
20091022002193;/welcome1.html
20091022002199;/welcome12.html' | awk -F";" '{if(oldt){print $1-oldt,oldurl}oldt=$1;oldurl=$2}'
1 /index.html
8 /wel.html
42 /welc.html
2 /welco.html
4 /welcome.html
6 /welcome1.html

和 xiooli 的差不多。。。


_________________
关注我的blog: ε==3


页首
 用户资料  
 
10 楼 
 文章标题 : Re: awk问题请教
帖子发表于 : 2009-11-10 12:34 

注册: 2005-11-15 23:10
帖子: 61
送出感谢: 0 次
接收感谢: 0 次
骨头都来了,下面的就看骨头吧。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译