awk是一个强大的文本分析工具,处理文本适合 拥有比grep 更灵活强大的功能。
用来看日志可以起到事倍功半的效果:
用法: awk ‘{pattern + action}’ {filenames}
pattern为条件 action为随后的操作
举例:
查询日志中指定关键字的日志
less -f tomcat_stdout.log | awk ‘/款项同步库存/ {print $0 }’
awk 会在 less -f tomcat_stdout.log 执行之后的结果里面 将带有关键字的过滤出来
查询日志中指定多个关键字的日志
/关键字/ 如果是多个关键字 则 /关键字1&&关键字2…/ 多个关键字用&&分隔,会查找满足多个关键字的文本信息。
$0表示输出这行全部列。
awk 默认将一条信息里面 以空格分割成多列 ,$1表示第一列 $2表示第二列 …
例如:
less -f tomcat_stdout.log | awk ‘/款项同步库存/ {print $1 “\t” $2 }’
“\t” 是表示用tab符 分隔 开 两列 ,这里只是拆出了两列 并显示
3.查询日志时候按指定的范围筛
比如说按时间范围
less -f tomcat_stdout.log | awk ‘/款项同步库存/ {if($1>=“20191111:13:27:24.541”&& $1<=“20191111:13:27:27.650”) print $1 “\t” $2 }’
if($1>=“20191111:13:27:24.541”&& $1<=“20191111:13:27:27.650”)
print $1 “\t” $2
表示第一列的值大于"20191111:13:27:24.541" 且 小于 “20191111:13:27:27.650”
这样可以筛出来这个范围内
也可以指定某个列等于哪个值的
除了可以放到less -f tomcat_stdout.log后面 也可以放在任意查询语句后面 比如说tail -f , cat 等
4.默认是按空格切分列,也可以按其他分隔符
默认空格
less -f tomcat_stdout.log | awk ‘/款项同步库存/ { print $1 “\t” $2 }’
改成按 , 分割
less -f tomcat_stdout.log | awk -F ‘,’ ‘/款项同步库存/ { print $1 “\t” $2 }’
改成同时按空格和,分割
less -f tomcat_stdout.log | awk -F ’ |,’ ‘/款项同步库存/ { print $1 “\t” $2 }’
这里用|将两个分隔符放到一起 -F ‘ |,’
本文介绍了awk作为强大的文本分析工具在日志查询中的应用。通过示例,展示了如何利用awk查找包含特定关键字的日志,组合多个关键字,按指定列筛选日志,以及改变字段分隔符等技巧,提高日志分析效率。
1843

被折叠的 条评论
为什么被折叠?



