awk,真的是一款牛逼的神器!


 点击图片获取最近两年爆款好文 

作者:川山甲

来源:https://www.cnblogs.com/baochuan/p/3833130.html

# 序

 

产品经理(PM)过来找你要最近某某的数据,而你知道这些数据目前只能通过日志文件去分析,因为我们知道,我们不可能把所有数据都放入db中(这不科学啊!)。每当有这样任务的时候,你就用php或java(又或c)写一个特殊任务的程序,这真是一件令人头痛的事情。

     

# 放入db???

 

为什么我不建议把数据放入db中呢?优点不言自明,我们可以通过sql语句很容易把数据拿出来。

缺点呢?首先就是我们不能把什么东西都往db里放?

原因,我归纳了以下几点:

1、数据的抽风型:

一般都是某某(不敢指明点姓,怕打击报复)脑门子一拍,突然想要某些数据,这就会来找你要。等这股抽风劲一过,很长时间没人再找你要数据了。

2、数据的臃肿型:

与其说是臃肿还不如说是乱七八糟。你不能把那一坨一坨的杂七杂八的数据,一股脑放入db中吧?那你的后台db成什么样子了?所以我们要管好我们的后院,不能什么东西都放到家里面。

3、成本:

干什么事情,我们不能做赔本的买卖。像这种一次性的买卖,我们就要降低成本去做。

 

为了解决以上问题,我们请出awk神器吧?一种“短小精悍”的神器,常常用一两行代码就能搞定一些复杂的任务。

 

# 本文宗旨

 

awk不难,关键是看我们怎么思考?我的思考方式是:在这么多数据行中,我要找什么(行位置)?找到之后,我们要干什么(如{})?

故我的主题就出来了:找什么和干什么。我不想讲什么语法之类的东西(不要在意这些细节)。

 

# 找什么?

 

这个世界最难的不是做什么,而是找什么?李清照的“寻寻觅觅”,最后把自己寻觅没了。仿古人,俺也寻寻觅觅了一阵子,结果跟清照大姐一样,迷失在寻寻觅觅中,到现在都不知道我在寻觅什么?——个人认为找什么不是体力活,而是技术活。awk吸引我的,也就是它教会了我怎么找我想要的东西?

 

 准备干粮

cat  netstat.txt 
Proto Recv-Q Send-Q Local-Address          Foreign-Address             State
tcp        0 0 0.0.0.0:3306           0.0.0.0:* LISTEN
tcp        1 1 0.0.0.0:80             0.0.0.0:* LISTEN
tcp        0 0 127.0.0.1:9000         0.0.0.0:* LISTEN
tcp        0 0 yuedu.com:80        124.205.5.146:18245         TIME_WAIT
tcp        0 0 yuedu.com:80        61.140.101.185:37538        FIN_WAIT2
tcp        0 0 yuedu.com:80        110.194.134.189:1032        ESTABLISHED
tcp        0 0 yuedu.com:80        123.169.124.111:49809       ESTABLISHED
tcp        0 0 yuedu.com:80        116.234.127.77:11502        FIN_WAIT2
tcp        0 0 yuedu.com:80        123.169.124.111:49829       ESTABLISHED
tcp        0 0 yuedu.com:80        183.60.215.36:36970         TIME_WAIT
tcp        0 4166 yuedu.com:80        61.148.242.38:30901         ESTABLISHED
tcp        0 1 yuedu.com:80        124.152.181.209:26825       FIN_WAIT1
tcp        0 0 yuedu.com:80        110.194.134.189:4796        ESTABLISHED
tcp        0 0 yuedu.com:80        183.60.212.163:51082        TIME_WAIT
tcp        0 1 yuedu.com:80        208.115.113.92:50601        LAST_ACK
tcp        0 0 yuedu.com:80        123.169.124.111:49840       ESTABLISHED
tcp        0 0 yuedu.com:80        117.136.20.85:50025         FIN_WAIT2
tcp        0 0 :::22                  :::* LISTEN

 上小菜(基础条件匹配):

 查询所有tcp中,接受队列非0的网络包。

localhost:zhoubc Guest$ awk '$1 =="tcp" && $2 > 0' netstat.txt
tcp 1      1 0.0.0.0:80    0.0.0.0:*    LISTEN

打印出来的内容,我们不知所云。如果把第一行打出来,就一目了然了。这时候我们要用到awk的全局常量(如果想知道AWK的全局常量,我们可以往下看,附录,我把常用的罗列出来了)NR。

localhost:zhoubc Guest$ awk 'NR==1 || $1 =="tcp" && $2 > 0' netstat.txt
Proto Recv-Q Send-Q Local-Address Foreign-Address State
tcp 1      1 0.0.0.0:80       0.0.0.0:*   LISTEN

看爽了是不是?

今日话题:留言聊一聊你在使用awk这方面的经验或心得,并点在看与转发此文到朋友圈,截止明晚20点,我们将选出1名读者赠送技术书籍一本。

end

最新整理的 2TB 技术干货:包括架构师实战教程、大数据、Docker容器、系统运维、数据库、redis、MongoDB、电子书、Java基础课程、Java实战项目、ELK Stack、机器学习、BAT面试精讲视频等。只需在「 民工哥技术之路」微信公众号对话框回复关键字:1024 即可获取全部资料。 

精彩文章推荐:


利用 Harbor 搭建企业级私有镜像仓库(赠书)

带你全面认识 Linux

推荐 5 款良心网盘,免费、空间大、不限速!

再见,VPN !

Linux性能检测常用的10个基本命令

Github下载慢解决了!「100%有效」

好文章,朕在看❤️↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值