说起awk很多人就头大,觉得这是什么脚本语言,太复杂了学不会。其实真不用学那么复杂,你就记住最常用的用法,就能解决百分之八十的问题。
大部分时候我们用awk干嘛?就是从一行文本里把我们要的那一段切出来啊。比如你的日志是空格分隔的,每一段是不同的字段,你只要取出请求时间和返回码,直接用awk '{print $1 $4}' log就好了啊。
默认就是按空白分隔,$1就是第一个字段,$2就是第二个,最后一个是$NF,就这么记,够你用好久了。
我上周刚处理了一份接口统计数据,每个请求的耗时在最后一列,我要把所有的耗时拿出来算平均值,用awk直接一句就把所有耗时导出来了,导入excel就算好了,比我一行一行复制快一百倍。
你还能按指定的分隔符切分,要是你的文件是逗号分隔的csv,加个-F参数就好了,比如awk -F',' '{print $2 $3}' data.csv,直接就把你要的列切出来,根本不用打开excel折腾。
甚至你还能加过滤条件,比如你只要把状态码是200的行的耗时拿出来,直接写awk '$4 == 200 {print $NF}' log,过滤加提取一步到位,太爽了。
我之前见过有人为了提取几列数据,专门写个python脚本跑,其实awk一行命令就搞定了,折腾那半天干嘛呀。
awk还能搞简单的统计,比如你要算所有请求的总耗时,直接awk '{sum += $NF} END {print sum}' log,结果直接出来,不用你再搞别的。真的,就这些用法,够你应付绝大多数场景了,那些复杂的语法,真用到的时候再查都来得及。