Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了awk技巧总结大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

1,指定多分隔符 实例: 提取文件名和大小,展示为"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.
1,指定多分隔符

例: 提取文件名和大小,展示为"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

命令解析:

  • -F 指定分隔符
  • -F[/ ]+ 表示指定多个分隔符,这里指定/和空格(也可以是其他),+为正则表达式,表示+前面的字符(/或者空格)重复1次或者一次以上
  • $NF awk内置变量,表示最后一个字段的内容
  • NF awk内置变量,表示浏览记录字段的个数

更多:

# echo "1:::2:3 4 5 6" | awk -F[: ]+ ‘{print $4}‘
4

2,数组

例:统计tcp连接状态

# 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,请注明来意。