shell AWK举个小例子

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

 准备干粮

[root@localhost ~]# cat net.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的网络包

[root@localhost ~]# awk '$1=="tcp" && $2>0' net.txt 
tcp        1 1 0.0.0.0:80             0.0.0.0:* LISTEN

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

[root@localhost ~]# awk 'NR==1 || $1=="tcp" && $2>0' net.txt 
Proto Recv-Q Send-Q Local-Address          Foreign-Address             State
tcp        1 1 0.0.0.0:80             0.0.0.0:* LISTEN

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/106524162