awk自定义函数一例(命令行下及awk脚本中) 2
来源:互联网 发布:报纸的排版软件 编辑:程序博客网 时间:2024/05/21 08:35
http://blog.chinaunix.net/uid-10731919-id-341792.html
awk自定义函数基本格式为,参数arg1、arg2也可无。函数在何时定义并无要求,可以在BEGIN块前,也可以在END块后;除了在主语句块中,何时都可以。
IP地址 访问时间 访问时长
211.103.220.197 28/Aug/2009:16:55:14-28/Aug/2009:16:56:22 1分8秒
211.103.220.197 - - [28/Aug/2009:16:55:14 +0800] 'GET /web/index.action HTTP/1.1' 200 20816 0.719
211.103.220.197 - - [28/Aug/2009:16:55:26 +0800] 'GET /web/dyanmicStat.action?time=16:58:06 HTTP/1.1' 200 9 0.043
211.103.220.197 - - [28/Aug/2009:16:55:27 +0800] 'GET /web/dyanmicStat.action?time=16:58:08 HTTP/1.1' 200 9 0.044
211.103.220.197 - - [28/Aug/2009:16:55:32 +0800] 'GET /web/dyanmicStat.action?time=16:58:10 HTTP/1.1' 200 9 0.033
211.103.220.197 - - [28/Aug/2009:16:55:32 +0800] 'GET /web/dyanmicStat.action?time=16:58:13 HTTP/1.1' 200 9 0.024
211.103.220.197 - - [28/Aug/2009:16:55:37 +0800] 'GET /web/dyanmicStat.action?time=16:58:15 HTTP/1.1' 200 9 0.027
211.103.220.197 - - [28/Aug/2009:16:55:37 +0800] 'GET /web/dyanmicStat.action?time=16:58:17 HTTP/1.1' 200 9 0.023
211.103.220.197 - - [28/Aug/2009:16:55:38 +0800] 'GET /web/dyanmicStat.action?time=16:58:19 HTTP/1.1' 200 9 0.024
211.103.220.197 - - [28/Aug/2009:16:55:40 +0800] 'GET /web/dyanmicStat.action?time=16:58:21 HTTP/1.1' 200 9 0.140
211.103.220.197 - - [28/Aug/2009:16:55:42 +0800] 'GET /web/dyanmicStat.action?time=16:58:23 HTTP/1.1' 200 9 0.044
211.103.220.197 - - [28/Aug/2009:16:55:44 +0800] 'GET /web/dyanmicStat.action?time=16:58:25 HTTP/1.1' 200 9 0.038
211.103.220.197 - - [28/Aug/2009:16:55:46 +0800] 'GET /web/dyanmicStat.action?time=16:58:27 HTTP/1.1' 200 9 0.028
211.103.220.197 - - [28/Aug/2009:16:55:48 +0800] 'GET /web/dyanmicStat.action?time=16:58:29 HTTP/1.1' 200 9 0.022
211.103.220.197 - - [28/Aug/2009:16:55:50 +0800] 'GET /web/dyanmicStat.action?time=16:58:31 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:55:52 +0800] 'GET /web/dyanmicStat.action?time=16:58:33 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:55:54 +0800] 'GET /web/dyanmicStat.action?time=16:58:35 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:55:56 +0800] 'GET /web/dyanmicStat.action?time=16:58:37 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:55:57 +0800] 'GET /web/dyanmicStat.action?time=16:58:39 HTTP/1.1' 200 9 0.020
211.103.220.197 - - [28/Aug/2009:16:56:00 +0800] 'GET /web/dyanmicStat.action?time=16:58:41 HTTP/1.1' 200 9 0.167
211.103.220.197 - - [28/Aug/2009:16:56:02 +0800] 'GET /web/dyanmicStat.action?time=16:58:43 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:56:04 +0800] 'GET /web/dyanmicStat.action?time=16:58:45 HTTP/1.1' 200 9 0.698
211.103.220.197 - - [28/Aug/2009:16:56:06 +0800] 'GET /web/dyanmicStat.action?time=16:58:47 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:56:09 +0800] 'GET /web/dyanmicStat.action?time=16:58:49 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:56:10 +0800] 'GET /web/dyanmicStat.action?time=16:58:51 HTTP/1.1' 200 9 0.022
211.103.220.197 - - [28/Aug/2009:16:56:12 +0800] 'GET /web/dyanmicStat.action?time=16:58:53 HTTP/1.1' 200 9 0.031
211.103.220.197 - - [28/Aug/2009:16:56:14 +0800] 'GET /web/dyanmicStat.action?time=16:58:55 HTTP/1.1' 200 9 0.020
211.103.220.197 - - [28/Aug/2009:16:56:16 +0800] 'GET /web/dyanmicStat.action?time=16:58:57 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:56:18 +0800] 'GET /web/dyanmicStat.action?time=16:58:59 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:56:20 +0800] 'GET /web/dyanmicStat.action?time=16:59:01 HTTP/1.1' 200 9 0.019
211.103.220.197 - - [28/Aug/2009:16:56:22 +0800] 'GET /web/dyanmicStat.action?time=16:59:03 HTTP/1.1' 200 9 0.019
58.33.241.108 - - [29/Aug/2009:17:26:11 +0800] 'GET /web/index.action HTTP/1.1' 200 20845 0.120
58.33.241.108 - - [29/Aug/2009:17:26:14 +0800] 'GET /web/dyanmicStat.action?time=17:28:53 HTTP/1.1' 200 9 0.016
58.33.241.108 - - [29/Aug/2009:17:26:16 +0800] 'GET /web/dyanmicStat.action?time=17:28:55 HTTP/1.1' 200 9 0.017
58.33.241.108 - - [29/Aug/2009:17:26:18 +0800] 'GET /web/dyanmicStat.action?time=17:28:57 HTTP/1.1' 200 9 0.017
58.33.241.108 - - [29/Aug/2009:17:26:20 +0800] 'GET /web/dyanmicStat.action?time=17:28:59 HTTP/1.1' 200 9 0.018
58.33.241.108 - - [29/Aug/2009:17:26:22 +0800] 'GET /web/dyanmicStat.action?time=17:29:01 HTTP/1.1' 200 9 0.016
58.33.241.108 - - [29/Aug/2009:17:26:24 +0800] 'GET /web/dyanmicStat.action?time=17:29:03 HTTP/1.1' 200 9 0.017
58.33.241.108 - - [29/Aug/2009:17:26:26 +0800] 'GET /web/dyanmicStat.action?time=17:29:05 HTTP/1.1' 200 9 0.017
58.33.241.108 - - [29/Aug/2009:17:26:28 +0800] 'GET /web/dyanmicStat.action?time=17:29:07 HTTP/1.1' 200 9 0.017
58.33.241.108 - - [29/Aug/2009:17:26:30 +0800] 'GET /web/dyanmicStat.action?time=17:29:09 HTTP/1.1' 200 9 0.017
58.33.241.108 - - [29/Aug/2009:17:26:32 +0800] 'GET /web/dyanmicStat.action?time=17:29:11 HTTP/1.1' 200 9 0.017
58.33.241.108 - - [29/Aug/2009:17:26:34 +0800] 'GET /web/ngoIndex.action HTTP/1.1' 200 12862 1.114
58.33.241.108 - - [29/Aug/2009:17:27:09 +0800] 'GET /web/queryngobyname.action?name=%E8%A5%BF%E8%97%8F%E7%BD%91 HTTP/1.1' 200 6285 16.879
58.33.241.108 - - [29/Aug/2009:17:27:54 +0800] 'GET /web/querymorengo.action?type=4 HTTP/1.1' 200 5489 0.101
58.33.241.108 - - [29/Aug/2009:17:34:01 +0800] 'GET /web/minyun.jsp HTTP/1.1' 200 1492 0.001
直接在命令行中的处理
awk 'BEGIN{FS=" +|[[]";print "IP地址\t\t\t访问时间\t\t\t\t访问时长"}function cal(){split(s_time,M,":");split(e_time,N,":");time=(N[2]-M[2])*60*60+(N[3]-M[3])*60+N[4]-M[4];if (ip) print ip"\t"s_time"-"e_time"\t"int(time/60)"分"time%60"秒"}$1!=ip{cal();ip=$1;s_time=$5}{e_time=$5}END{cal()}' file
写到awk脚本中,调用方法为awk -f my.awk file
awk脚本my.awk
BEGIN {
FS=" +|[[]"
print "IP地址\t\t\t访问时间\t\t\t\t访问时长"
}
{ if ($1!=ip) {cal();ip=$1;s_time=$5}
e_time=$5
}
END {
cal()
}
function cal () {
split(s_time,M,":")
split(e_time,N,":")
time=(N[2]-M[2])*60*60+(N[3]-M[3])*60+N[4]-M[4]
if (ip) print ip"\t"s_time"-"e_time"\t"int(time/60)"分"time%60"秒"
}
- awk自定义函数一例(命令行下及awk脚本中) 2
- awk中自定义函数
- awk中自定义函数
- awk字符串函数(一)
- awk用户自定义函数
- AWK用户自定义函数
- awk向脚本传递参数(一)
- linux中awk下 gsub函数用法
- linux中awk下 gsub函数用法
- AWK中使用函数
- awk 自定义函数trim
- Awk脚本
- awk脚本
- awk(五)awk函数
- awk练习题(一)
- awk(一)
- linux下字符串处理工具二:awk( 二),awk脚本
- 用awk处理数据的简单脚本(一)
- 进阶中级程序员需要做的事
- Small Business and Open Source eCommerce Platform
- resin端口8080被占用解决方法
- vim学习(二)
- Makefile之make 的运行
- awk自定义函数一例(命令行下及awk脚本中) 2
- 网站地图制作方法
- 二元查找树
- TCP首部
- 命题逻辑推理
- POJ 2406-Power Strings (KMP)
- S3C2440对NORflash芯片EN29LV160AB的操作详解
- awk中自定义函数
- Mysql千万级别数据优化方案