AWK的功能是什么?与sed和grep很相似,awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能:它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上,awk的确拥有自己的语言:awk程序设计语言,awk的三位创建者已将它正式定义为:样式扫描和处理语言。
语法:
awk [-F re] [parameter...] ['prog'] [-f progfile] [in_file...]
-F re:允许更改字段分隔符
parameter:为变量赋值
'prog':awk的程序语句段,标准格式'pattern {action}',可以省略之一,省略pattern表示没有样式匹配,省略action标准输出
pattern:可以使用语法/re/加上样式匹配技巧
{action}:总是被大括号包围,各语句之间用分号;分隔
-f progfile:progfile文件,符合awk语法
in_file:awk的输入文件
约定:
1)1,2,3...这样的方式来表示记录中不同的字段,0表示整行
2)RS:分隔符变量,NR:当前工作的记录数
举例:
1)第2行到5行中,以%分隔的1、3、5字段值
awk -F % 'NR==2,NR==5 {print $1 $3 $5}' test
2)在vmstat监控数据,加上时间显示
vmstat -n 5 | awk '{ printf "%s\t",$0; system("date +\"[%F %T\"]"); }' vmstat -n 5 | awk '{print strftime("[%Y-%m-%d %H:%M:%S]"),$0}'
3)查询某个时间段访问最频繁的URL请求
cat 2012-05-25-taobao-access_log |grep '2012:05:25:15:1' |awk -F\| '{print $9}'|sort -rn |uniq -c |sort -rn |more
4)nestat查看连接:
netstat -nat | awk '{print $6}' | sort | uniq -c | sort -rn netstat -anp | awk '{print $4}' | sort -rn | uniq -c|sort -rn |more
sort----------------------
-n, --numeric-sort compare according to string numerical value
-r, --reverse reverse the result of comparisons
-k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1),排序关键列