2008年8月13日星期三

awk实际应用


netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查看当前的连接,一直都不太清楚awk,所以基本上都只是会用的级别。
awk 后面的接的命令可以有
'或者"括起来
,这个都是允许的。
NF 当前行有多少列
NR 当前是第几行
FS 分割字符
这样就容易理解了netstat -n 出来的数据交给awk处理,
当awk读入一行数据,看开头是不是匹配tcp ,如果匹配,则在S[某种状态]自增,最后全部算完后,弄个 for循环,读出来.
在我的机子上等同于

netstat -n | awk '/^tcp/ {++S[$6]} END {for(a in S) print a, S[a]}'

类似的还有
awk ' { arr[$1]=arr[$1]+$2 } END { for( key in arr) { print key , arr[key] } } ' filename


弄来弄去,总算是感觉自己awk算入门了.

没有评论: