大佬教程收集整理的这篇文章主要介绍了awk技巧总结,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
实例: 提取文件名和大小,展示为"test.sql.gz 100M"
# du -sh /bkup/dayBACk/test.sql.gz 100M /bkup/dayBACk/test.sql.gz
命令如下:
# du -sh /bkup/dayBACk/test.sql.gz | awk -F ‘[/ ]+‘ ‘{print $NF," ",$1}‘ test.sql.gz 100M
命令解析:
更多:
# echo "1:::2:3 4 5 6" | awk -F[: ]+ ‘{print $4}‘ 4
# netstat -an |grep ^tcp | head -5 tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN tcp 0 0 192.168.200.41:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN # netstat -an | awk ‘/^tcp/{++S[$NF]} END{for(a in S) print a,S[a]}‘ LAST_ACK 54 LISTEN 24 CLOSE_WAIT 70 ESTABLISHED 86 FIN_WAIT2 32 TIME_WAIT 984
命令解析:
awk中的数组本质上属于关联数组,也就说它的下标可以为字符串,在上述例子中,首先创建了一个数组S并且将该命令输出的最后一个字段作为下标(LAST_ACK,LISTEN,CLOSE_WAIT...),当执行到第一行时,我们引用的是S[‘LISTEN‘],很明显这个元素是不存在的,awk在元素不存在时,会@L_674_13@创建该元素,并且将该元素的值设为0,因此经过计算后S[‘LISTEN‘]值会变为1,由于END模式中的语句会在最后执行,这里姑且先不考虑它,继续运行第二行,依旧是S[‘LISTEN‘],此时经过计算,它的值会变为2,以此类推,指导执行完最后一行结束,进入END模式的运行,通过一个for循环,打印出数组的下标和它的值,即为我们最终想要的结果。PS:awk在字符串,空字符串参与运算时,也会将其当做0来处理
以上是大佬教程为你收集整理的awk技巧总结全部内容,希望文章能够帮你解决awk技巧总结所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。