感谢支持
我们一直在努力

Linux awk使用

分析日志文件


课前基础:  awk基本使用


awk ‘ BEGIN{ print “start” } {commands} END{ print “end” }’


先执行BEIGN语句,然后重复的执行commands行,直到文件全部读取完毕,读取文件末尾时,执行END语句块。


这个语句可以没有BEGIN、END但是必须有{commands}


1、awk特殊变量:


NR:记录数量,在执行过程中对应于当前行号


NF:表示字段数目,执行过程中对应于当前行的字段数


$0:执行行中的文本内容


$1:包含第一个字段的文本内容


$2:包含第二个字段的文本内容


2、将外部变量传递给awk:


借助于-v参数


3、对awk的行进行过滤


awk ‘NR <5’ 行号小于5;awk ‘NR==1,NR==4’ 行号在1到5之间的行


4、awk自建的内置函数


split、length、substr等等


5、设置字段定界符


默认的是空格,我们可以使用-F ‘分隔符’


demo演示:



  1. #!/bin/bash     

  2. echo $1;   

  3.   

  4. grep $1 /data/logs/login-resin-stdout.log|awk -F ‘ ‘ ‘{ arr[split($21,tmp,”:”)];print tmp[2] }’  

  5. |awk -v var_1=$2 ‘{arr[$i]++;}END{for (i in arr){if(arr[i]>var_1){print i,arr[i]}}}’  

表示的是先文本先按变量$1过滤,然后文本行按照空格分隔,此文本被分成21段,然后将第21段的字符按照字符’:’分隔,得到 的数组只要第2的值(注意该数组标量是从1开始),然后统计得到的值重复的次数。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux awk使用
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏