awk使用

关键参数

  1. -F:指定分隔符,将每行输入按分隔符截成若干段,可指定多个分隔符
  2. -f:指定脚本,脚本可以内含所有awk的参数,用脚本替代awk的参数

awk 格式

awk [-F|-f|-v] [对应参数] 'BEGIN{} {command} END{}' file

字段说明

  1. [-F|-f|-v] [对应参数]:指定分隔符,或者脚本、或者变量的,对应参数中放入参数,其中变量的指定格式是 var=value,-F为最常用命令
  2. BEGIN{}:是整个处理过程开始之前做的操作,相当于Junit的@BeforClass。一般变量初始化可在这里初始化,但是默认变量不初始化也有初始值,所以一般可不使用
  3. {command}:针对awk处理的每一行的操作,最常用部分
  4. END{}:类似BEGIN{},是整个处理过程结束之后的操作,相当于Junit的@AfterClass,一般可不用

awk 格式举例

统计当前目录下所有文件大小

ls -ll|awk -F " " 'BEGIN{sum = 0} {sum+=$5} END{print "total size " sum}'
其中 -F " " 可以不写,因为分隔符默认就是空格,BEGIN{sum = 0}可以不写,因为变量初始化就是0,不用声明

awk 特殊值

  1. $0:代表当前处理的整个一行内容
  2. $1~$n:代表被分隔符分割后,一行内的,指定段的内容
  3. NF:代表当前处理行中,被分隔符分割后,一行内,字段个数,从1开始
  4. $NF:代表当前处理行中,被分隔符分割后,一行内,最后一个字段的内容(相当于$n)
  5. NR:代表当前被处理行的编号,如果awk处理多个文件的话,各个文件之间不重置编号,从1开始
  6. FNR:代表当前被处理行的编号,如果awk处理多个文件的话,各个文件之间重置编号
  7. FS:代表awk当前任务中,input的行内分隔符是什么,默认是空格
  8. RS:代表awk当前任务中,input行之间的分隔符是什么,默认是换行符
  9. OFS:代表awk当前任务中,output输出的行内分隔符,默认是空格
  10. ORS:代表awk当前任务中,output输出的行之间的分隔符,默认是换行符

awk 特殊值举例

统计两个文件的差异

思路是,通过FNR,将第一个文件的所有行存到数组a中,当遍历到第二个文件的时候,进行判断对比,输出第二个文件行内容不存在第一个文件中的
awk 'NR==FNR{a[$0]}NR>FNR{ if(!($1 in a)) print $0}' success.txt result_data.txt|sort|uniq

列出当前目录下文件,按\t分割

ls -ll|awk -F" " 'ORS ="\t" {print $NF}'

awk 正则

  1. 正则的pattern是放在两个/之间的
  2. 正则的匹配使用的是如下
  3. ~:代表匹配到
  4. !~:代表不匹配

awk 正则举例

判断tcp的连接数

netstat -an|awk '$0 ~ /^tcp/ {++s}END{print "total tcp num " s }'

awk 数组

awk的数组是关联数据,和map类似,通过for in遍历是无序的,通过下标有序

awk 数组举例

统计tcp链接,各种状态的个数

netstat -an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a,s[a]}'

awk 各种例子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值