很直观的awk使用案例

点击了解更多技术资料和免费学习视频,请加入讨论群:662736393

欢迎关注百哥IT技术专栏,联系QQ:3473067134

 

什么是awk

awk是Linux文本处理三剑客之一,在grep,sed,awk中,awk功能最为强大,使用最为灵活,因为其本身也属于一种编程语言,可以通过编程实现各种需要的文本处理需求。

当然,awk使用也较为复杂,这里用直观的例子来介绍awk的日常使用。

案例一:通过awk取得服务器的ip地址和掩码,并按自己想要的格式输出(假设希望让ip地址和掩码之间用---相连)

步骤1:

[root@centos8 ~]# ifconfig ens33 | awk 'NR==2{print}'
 inet 192.168.0.208 netmask 255.255.255.0 broadcast 192.168.0.255

说明:awk 'NR==2{print}'是打印第二行的意思,相当于sed –n 2p,当然这里使用sed更加方便,只是为了说明awk的用法

步骤2:

[root@centos8 ~]# ifconfig ens33 | awk 'NR==2{print}' | awk '{print $2}'
192.168.0.208

说明:awk '{print $2}'是打印第二列的意思,awk默认以空格作为分隔符,这里的第二列就是ip地址了,同样awk '{print $2,$4}'可以得到ip加掩码

[root@centos8 ~]# ifconfig ens33 | awk 'NR==2{print}' | awk '{print $2,$4}'
192.168.0.208 255.255.255.0

步骤3:

ifconfig ens33 | awk 'NR==2{print}' | awk 'BEGIN {OFS="---"} {print $2,$4}'
192.168.0.208---255.255.255.0

说明:这里的BEGIN{}是对awk的默认参数进行设置,OFS是awk输出信息的默认分隔符,这里="---"就是把输出分隔符设置为---

案例二:获得httpd服务的端口号

步骤1:

[root@centos8 ~]# netstat -nltp | awk '/httpd/'
tcp6 0 0 :::8080 :::* LISTEN 1505/httpd 

说明:awk '/httpd/'相当于grep httpd,获得包含httpd的一行

步骤2:

[root@centos8 ~]# netstat -nltp | awk '/httpd/ {print $4}'
:::8080

说明:打印包含httpd的行的第4列

步骤3:

[root@centos8 ~]# netstat -nltp | awk '/httpd/ {print $4}' | grep -o [0-9]*
8080

说明:grep –o是指显示过滤出的数据,只留下数字,其他的不要,星代表可以匹配多位数字。

案例三:统计出/etc/目录下所有conf结尾的文件的总大小

步骤1:列出相关文件

[root@centos8 etc]# ls -l *.conf
-rw-r--r--. 1 root root 1085 May 10 2019 chrony.conf
-rw-r--r--. 1 root root 117 Nov 9 01:10 dracut.conf
-rw-r--r--. 1 root root 38 May 11 2019 fuse.conf
-rw-r--r--. 1 root root 9 Sep 10 2018 host.conf
-rw-r--r--. 1 root root 4849 Nov 9 04:56 idmapd.conf
-rw-r--r--. 1 root root 7916 Mar 29 11:30 kdump.conf
省略。。。

步骤2:使用awk抓取第5列并进行相加,然后打印出来

[root@centos8 etc]# ls -l *.conf |awk 'BEGIN {size=0;} {size=size+$5;} END{print "文件总大小是"size"字节"}'
文件总大小是41985字节

说明:

{size=0;} {size=size+$5;},因为awk本身支持编程,这里则是定义了一个变量size,然后size则是对第5列的累加。

{print "文件总大小是"size"字节"}' 这里双引号里的内容是自己加的,size是经过计算后的变量结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值