Welcome 微信登录

首页 / 操作系统 / Linux / 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开始),然后统计得到的值重复的次数。Vim的分割窗口split命令修改Ubuntu默认编辑器为Vim相关资讯      awk 
  • 使用 awk 过滤文本或文件中的字符  (07月25日)
  • Linux 管理员都应该会的命令:sed   (01月13日)
  • Linux awk文本分析工具  (12/13/2015 16:29:12)
  • 使用awk格式化输出文本  (04月14日)
  • 使用awk批量杀进程的命令  (12/20/2015 15:36:24)
  • 使用 Linux/Unix 进行文本处理  (11/23/2015 09:54:13)
本文评论 查看全部评论 (0)
表情: 姓名: 字数