Junhc

岂止于博客

Awk命令详解

awk命令

awk [-F fs] [-v var=value] [-f progfile | ‘prog’] [file …]
-F 分隔符
-v 定义变量
-f 调用脚本
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
// 匹配代码块,可以是字符串或正则表达式
{} 命令代码块,包含一条或多条命令
; 多条命令使用分号分隔
END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息

awk内置变量
ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符
$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域..以此类推。
$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数
按日期分组统计
[2020-03-15 12:00:44,439][mq-producor-server-40] [Topic: ocache_log Save message to DB failed.]
[2020-03-15 12:00:44,451][mq-producor-server-53] [Topic: ocache_log Save message to DB failed.]
[2020-03-15 12:00:44,457][mq-producor-server-35] [Topic: ocache_log Save message to DB failed.]
[2020-03-15 12:00:44,470][mq-producor-server-58] [Topic: ocache_log Save message to DB failed.]
[2020-03-15 12:00:44,502][mq-producor-server-16] [Topic: ocache_log Save message to DB failed.]
[2020-03-15 12:00:44,531][mq-producor-server-37] [Topic: ocache_log Save message to DB failed.]
grep 'Save message to DB failed' /data/mq-log/mq-server-boot.log.2020-03-06|awk '{s[substr($2,1,2)]+=1}END{for(i in s) {print i,s[i]} }'|sort -n