【awk】个人用到的方法记录

awk博大精深,本人除了简单的用法,其他的在工作中尚未深入研究。

另,附上几个blog的文章,后续可能会更新这个列表:

  1. Linux awk命令详解http://blog.chinaunix.net/uid-25120309-id-3801250.html
  2. http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

【AWK】
去掉空格:
awk ‘{ result=gensub(/ /,"",1);print result }‘

打印某一段内容:
awk ‘{print $7}‘ access.log

统计IP数量:
awk ‘{cs[$1]+=1} END {for(c in cs) print cs[c], c}‘ access.log |sort -nr

打印最后一列:
awk ‘{print $8 " " $NF} ‘ access.log

统计大小:
awk ‘{print $10 "  " $1 "  " $7}‘ access.log|awk ‘{B+=$1} END {print B/1024/1024 " MB"}‘

统计TCP状态:
netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}‘

统计日志中http状态码
zcat 2013-07-15-0000-2330_cs.ecqun.com.*|awk ‘{print $9}‘|sort|uniq -c|sort -nr|more

统计日志格式最后一行是源站IP的对应数据
zcat 2013-07-15-*|awk ‘$7~/cs.ecqun.com/{print $NF}‘|sort|uniq -c|sort -nr|head

统计日志中18点访问cs.ecqun.com,状态码为200的数据,打印响应时间和源站地址
zcat 2013-07-15-18*|grep cs.ecqun.com|awk ‘$9=="200"{print $(NF-7),$NF}‘|sort|uniq -c|sort -nr|more

统计延时超过100ms的请求
zcat 2013-07-15-18*|grep cs.ecqun.com|awk ‘$9=="0"&&$(NF-7)>100 {print $(NF-7)}‘|sort|uniq -c|sort -nr|more

NR:整个脚本当前已经读过的记录数,就是行号,从1开始。随着所读文件的数目,一直累加。
FNR:同NR,不过是相对于当前在读的文件记录数。每开始读一个文件时,从1开始累加,相当于行号。读完一个文件后就会清0,新的文件又会从1开始。
http://in.sdo.com/?p=1054

统计http code为502的数量,IP
假设有以下文件:
cs.502 : 统计了出现502的次数和IP,格式为“次数  IP”
cs.502.ip : 从cs.502中筛选出IP,格式为“IP”
cs.502.country : 利用qqwry做IP到地理位置的转换,格式为“IP  地理位置”
现在的需求是,把cs.502和cs.502.country合并

awk ‘NR==FNR {a[$2]=$0;next} NR>FNR {print a[$1] " "$2}‘ cs.502 cs.502.country >cs.502.log

计算http code 海外相对全部的占比是多少
test.all 的内容是:
46255 0
967 504
218 502

test.oversea 的内容是:
1171 0
408 504
205 502

awk ‘NR==FNR {a[$2]=$1;next} NR>FNR {printf "%.2f% ", $1/a[$2]*100;print $2}‘ test.all test.oversea 
2.53% 0
42.19% 504
94.04% 502

计算百分比:
echo 55 4001638 |awk ‘{printf "%.4f%\n",$1/$2*100}‘

根据后3位来排序:
1231234214329049203
4239049230492039402
3209402394023940234
awk ‘{print $0,substr($0,length($0)-2,3)}‘ x.txt |sort -n -k 2 | awk ‘{print $1}‘
sed -r ‘s/(.*)((.){3})/\1|\2/‘ test.txt |sort -n -k 2 -t \| |sed ‘s/|//g‘

去重 
awk ‘!a[$1]++‘ test.log
时间: 2024-08-05 14:45:43

【awk】个人用到的方法记录的相关文章

ASP.NET页面优化性能提升方法记录

今天与大家分享:一种优化页面执行速度的方法.采用这个方法,可以使用页面的执行速度获得[8倍]的提升效果. 为了让您对优化的效果有个直观的了解,我准备了下面的测试结果截图: 测试环境:1. Windows Server 2003 SP22. Viaual Studio 2008,使用自带的WebDev.WebServer.EXE运行网站程序.3. (ThinkPad SL510):Core2 T6670 2.2GHz, 4G内存 二个红框中的数字反映了优化前后的执行时间.数字表明:优化前后,执行时

伪链接实现方法记录

链接一般作为页面跳转的手段,但是有时候需要使用链接形式,来实现ajax请求(非直接的页面跳转),或者来实现特殊的页面动画效果(点击链接,一段文字展开和收起). 总结起来有以下三种方法: 1.给href属性设置#,使得页面保持在当前页面, 但是页面位置会跳转到顶部,除非使用锚点跳转到特殊位置. <a href="#">click here(#)</a><br/> 2.使用javascript伪协议,给href属性设置 javascript:void(0

64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录

64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录 经过几天不停的网上找资料,实验,终于联通了. 环境:系统:win 2008 ,SqlServer2008 R2, 连接Oracle10g 在SqlServer2008 R2机器上需要安装Oracle客户端32位和64位两个,然后配置连接别名.设置注册表.详细情况见下面 1.错误1 ------------------------------------------------ 64位机器上建立OLE_DB链接报错 报

asp.net DataTable导出 excel的方法记录(第三方)

官网:http://npoi.codeplex.com/ 简单应用,主要是可以实现我们想要的简单效果,呵呵 需要引入dll,可以在官网下载,也可在下面下载 C#代码   protected void getExcel(DataTable dt) { NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.Sheet sheet = book.CreateSh

Android代码混淆及项目发布方法记录

 Android代码混淆及项目发布步骤记录 本来整理了一份Android项目混淆与发布的文档,突然想到何不写篇博客,分享一下呢,如是便有了本文. Android代码混淆及项目发布步骤记录 一.清理代码中的调试信息,如Log.System.out 二.在清单文件中修改版本为当前版本,如果需要更新数据库,则需要在配置类或配置文件中修改程序数据库版本. 三.在清单文件中将项目的debugable设置为false 四.创建签名证书keystore文件 五.在项目中的project.properite

PHP中处理浮点数的一些方法记录

PHP中处理浮点数的一些方法记录 请不要在程序中直接使用等号.大于.加.减.乘.除等操作浮点数,如果需要对浮点数进行以上操作,请使用下面的BC系列函数.以确保准确性及精度. 两个高精度数比较大小 int bccomp ( string $left_operand , string $right_operand [, int $scale ] ) left=right 返回 0 left<right 返回 -1 left>right 返回 1 $scale 需要比较的精度,即小数点后多少位 两个

使用安卓读取sqlite数据库方法记录

最近要实现android读取sqlite数据库文件,在这里先做一个英汉字典的例子.主要是输入英语到数据库中查询相应的汉语意思,将其答案输出.数据库采用sqlite3. 如图: 实现过程完全是按照参考文章中所述.其中要说明的是,程序在第一次启动的时候,会把数据库安装到内存卡上面,从而可以读却数据库. 相关的代码: Java代码   package com.easymorse; import java.io.File; import java.io.FileOutputStream; import 

JavaScript的gzip静态压缩方法记录

传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,幸亏现在的浏览器都支持压缩传输(通过设置http header的Content-Encoding=gzip),可以通过服务器的配置(如apache)为你的js提供压缩传输,或是appfuse中使用的GZipFilter使tomcat也提供这种能力 现在的问题是这种动态的压缩会导致服务器CPU占用率过高,现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好) 一.下面描述在tomcat中的应用 1.

oracle account locked解决方法记录

今天在访问一个老项目时,后台报错提示 oracle account locked,之前一直可以正常访问的,不知道为什么会出现这个问题,百度一下原因大概是多次登陆失败造成的,一般数据库默认是10次尝试失败后锁住用户,找到原因后接下来就是解决问题了,解决思路很简单:对用户解锁就行了,但是问题就出现在了查找用户上. 本身对oracle的结构就不是很熟悉,所以在解锁用户的时候走了很多弯路,下面就一一道来: 一.因为数据库已久远,忘记了sys用户密码,所以只能远程到服务器登陆,在登陆是确遇到了另外一个错误

jupyter notebook 的使用说明 转自 http://blog.csdn.net/tina_ttl/article/details/51031113#pythonjupyter-notebook各种使用方法记录持续更新

Python·Jupyter Notebook各种使用方法记录·持续更新 标签(空格分隔): Python PythonJupyter Notebook各种使用方法记录持续更新 一 Jupyter NoteBook的安装 1 新版本Anaconda自带Jupyter 2 老版本Anacodna需自己安装Jupyter 二 更改Jupyter notebook的工作空间 1 方式一 2 方式二绝招绝招 三Jupyter的各种快捷键 四Jupyter Notebook如何导入代码 1 将本地的py文