大数据中AWK命令的示例分析

技术大数据中AWK命令的示例分析这篇文章将为大家详细讲解有关大数据中AWK命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对于下面的nginx日志access.log,用脚

这篇文章将为大家详细讲解有关大数据中AWK命令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

对于下面的nginx日志access.log,用脚本分析出访问互联网协议(互联网协议的缩写)的前10名。

其实这个题不难,但是考察了几个常用的壳命令,awk,uniq,sort,head,我觉得对于做大数据开发、运维、数仓等来说都是应该必备的。

2018-11-20t 233:37:40 08:00119。15 .90 .30 '-GET/free。PHP?proxy=out _ HP sort=page=1HTTP/1.1 ' '/free。PHP '-2000.1563626849/7213 lsv 1.2 ECD he-RSA-AES 128-GCM-sha 256 '-Mozilla/4.0(兼容;msie 6.0 windowsnt 5.1 sv1 qqdownload 732 . net4.0c . net4.0 elbrowser)'

2018-11-20t 23:37:44 08:00117。30 .95 .62 '-GET/partner。phphttp/1.1 ' '/partner。PHP '-2000.0164576534/6956 lsv 1.2 ECD he-RSA-AES 128-GCM-sha 256-3359博客。csdn。net/it homer/article wow 64)applebwebkit/537.36(KHTML,likeGecko)Chrome/63。0 .3239 .132 safari/537.36 '

2018-11-20t 23:37:44 08:00117。30 .95 .62 '-GET/CSS/bootstrap。量滴csshttp/1.1 ' '/CSS/bootstrap。量滴CSS '-2000.04539819402/19757 tlsv 1.2 ECD he-RSA-AES 128-GCM-sha 256-<!DOCTYPE ow64)applebwebkit/537.36(KHTML,likeGecko)Chrome/63。0 .3239 .132 safari/537.36 '

2018-11-20t 23:37:44 08:00117。30 .95 .62 '-GET/CSS/提示。量滴csshttp/1.1 ' '/CSS/hint。量滴CSS '-2000.0003931635/1989 tlsv 1.2 ECD he-RSA-AES 128-GCM-sha 256-https://proxyw64)applebwebkit/537.36(KHTML,likeGecko)Chrome/63。0 .3239 .132 safari/537.36 '

来上答案

汽车通道。日志| awk"{ print $ 2 }"| uniq-cn

bsp;| sort -k1 -nr| head -10

 

其实这个问题还有很多变种,比如除了脚本,用你最熟悉的语言写出来,还有如果文件过大,超过了内存限制,怎么处理。不过这些都是题外话了,我们今天主要讲一下awk在工作中的一些简单的应用。

大数据中AWK命令的示例分析

其实awk的功能非常强大,不过今天我们主要来讲讲在我们的工作中比较常用的awk用法。


awk '{[pattern] action}' {filenames}

 
 

切割文件

-F 指定拆分文件的分隔符,默认是空格或者 \t 比如上面的日志我们想获取第二列的ip地址,我们可以这样写

awk -F ' ' '{print $2}'  access.log 

 

空格我们是可以不用写的,我这里写出来做一个示范。

其实还有一种特殊字符,比如hive中默认分隔符是0x01,这种的使用awk怎么写呢?

awk -F '\\001' '{ print $1 }' abcd.txt

 
 

内置变量的使用

  • $0 用于打印出整行的字段.
  • $n 由 -F 参数指定的分隔符切割之后,$n用于打印出来第几个字段,索引从1开始
       
  • NF 每行数据切分之后,有多少列,比如我们可以用print $NF 来打印出最后一列

有一些时候我们可以用awk 截取其中的某几个字段拼接出来我们想要的一些语句。
比如我们想截取上面access.log里面的ip字段,然后生成一些sql,插入到数据库。


awk '{print "insert into mytable(ip) values('\''"$2"'\'');"}'  access.log > /tmp/ip.sql

 

大数据中AWK命令的示例分析

有人会问,这种场景一般什么时候会用呢,比如你有一万条或者更多的数据,你完全可以写一个sql来插入,但是如果是数量太多的话,一次性写入太多数据,会导致锁表,这个时候其他人就没法插入了,如果是线上的生产环境就更不允许了,所以对于一些类似的操作,我们可以拆分出多个sql来一个个的执行,这样单个sql锁表的时间就会减少,避免长时间锁表带来的数据库不可用。

 

正则匹配

有时候我们只想打印出来一些我们想要的列,我们可以通过正则匹配来做。

比如我们想打印出来上面的access.log中117开头的ip,可以这样做.

awk '$2 ~ /^117/ {print $2}' access.log 

 
 

类sql功能

其实awk还可以帮我们实现一些简单的类似sql的功能,我们也简单说一下。

比如我们有一个下面的学生表

id  班级  姓名
id    class   name

1  1班 张三
2  2班 李四
3  1班 王五
4  3班 赵六

比如我们想统计每个班级有多少同学,可以使用如下命令

awk '{a[$2]++} END {for(i in a){print i"人数 : "a[i]}}' student.txt

    

关于“大数据中AWK命令的示例分析”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107721.html

(0)

相关推荐

  • 如何快速涨到1000粉丝,1000个抖音粉丝多少钱?

    技术如何快速涨到1000粉丝,1000个抖音粉丝多少钱?如何快速涨到1000粉丝?我们总结了一份抖音涨粉运营指南,希望能帮助大家突破1000粉丝,早日开通购物车!
    1、互粉互赞群
    最简单的方式是加一些抖音群,或专门用于互

    测评 2021年11月11日
  • Linux虚拟机简介和系统要求是什么

    技术Linux虚拟机简介和系统要求是什么本篇文章给大家分享的是有关Linux虚拟机简介和系统要求是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、 V

    攻略 2021年11月23日
  • Excel如何录入权限矩阵

    技术Excel如何录入权限矩阵这篇文章给大家介绍Excel如何录入权限矩阵,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 领导要录入一个权限矩阵的数据入数据库,问我有没有

    攻略 2021年11月16日
  • 汽车灯光标志,如何快速诊断汽车灯光故障

    技术汽车灯光标志,如何快速诊断汽车灯光故障快速诊断汽车灯光故障1)检查灯泡:通常目测的方法进行检查,如果灯泡黑蒙蒙或灯丝熔断,应更 换新灯泡汽车灯光标志。2)检查熔丝:如果熔丝频繁熔断或一开前照灯就熔断,应排除灯光线路短

    生活 2021年10月23日
  • 会意字大全,象形、指事、会意、形声字各二十个

    技术会意字大全,象形、指事、会意、形声字各二十个象形字:雨会意字大全、元、木、眉、左、右、门、龟、车、月、龟、马、鱼、日、门、木、山、手、羊、草、鸟、虫、川、耳、口、人、田、水、火 指事字:上、一、二、下、丨、丩、爻、元

    2021年10月21日
  • 仿照Bootstrap的input如何修改upload上传图片的样式

    技术仿照Bootstrap的input如何修改upload上传图片的样式这篇文章将为大家详细讲解有关仿照Bootstrap的input如何修改upload上传图片的样式,小编觉得挺实用的,因此分享给大家做个参考,希望大家

    攻略 2021年11月19日