利用 Linux grep 和 awk 完成日志过滤
导语:有时候系统的日志信息的量是很庞大的,这时要查看具体问题可能比较麻烦。此时可以过滤掉无用的日志信息,从而获取预期想获取的信息。或者在排查问题时,查看具体的某一个错误。
Linux grep 命令用于查找文件里符合条件的字符串
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
场景:系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)
grep 的与或操作:
grep 与操作(其实就是多次筛选)grep k1 | grep k2grep 或操作grep -E 'k1|k2'egrep 'k1|k2'awk '/k1|k2/'
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
以 test.log 的内容为例:
2022-06-1 NameError
2022-06-2 NameError
2022-06-3 NameError
2022-06-4 NameError
123
456
abc
def
2022-06-5 NameError
2022-06-6 NameError
2022-06-7 NameError
读取日志中时间大于 2022-06-4 && 出现 NameError
关键字的信息,$0 表示整行文本,$1 表示输出第一列。
#!/bin/bashwhile read line;
doecho $line | grep 'NameError' \\| awk -F ' ' '{if($1 > "2022-06-4") print $0}' ;
done < test.log
此时,可以用 awk 输出到另一个文件中,结果放到 result.log :
#!/bin/bashwhile read line;
doecho $line | grep 'NameError' \\| awk -F ' ' '{if($1 > "2022-06-4") print $0}' >> result.log
done < test.log
或者用更为简单方法:
#!/bin/bash# awk '{if($0~"filter-string") print}' xxx.log
# 解释说明:抽取 xxx.log 整个日志文件中,包含 "filter-string" 的行,打印输出awk '{if($0~"NameError" && $1 > "2022-06-4") print}' test.log >> result.log
# 要附加条件,只需要在 if 里面添加内容即可,例如:
# 将 $0~"NameError" -> ($0~"NameError" || $0~"Error")
参考内容:
Linux grep 命令 | 菜鸟教程
Linux awk 命令 | 菜鸟教程
利用 Linux grep 和 awk 完成日志过滤相关推荐
- linux grep sed awk
linux 文本编辑命令grep sed awk(转) grep grep (global search regular expression(RE) and print out the li ...
- Linux中的 awk查找日志中的相关记录
假设要在 api.log.201707201830 文件中,(此文件的多个字段数据以不可见字符^A(键盘上按下Ctrl+V+A)分隔),要输出第70个字段: awk -F '^A' '{print $ ...
- linux 命令行 过滤,Linux常用文本过滤命令(find grep wc awk sed sort uniq split)
都支持regular expression 1. find-name 按名字查找 -perm 根据权限查找 -ctime –n +m 根据创建时间查找,-n n天内,+n n天之前 -mtime –n ...
- Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)
shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...
- linux三剑客及正则表达(grep,sed,awk)
首先我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令. 在说这三个命令前我们要插入一个小插曲就是"正则表达式 ...
- Linux Shell重定向 管道命令 grep搜索 awk编程 sed文件操作高阶函数
在编程中如果能够熟悉shell高阶语法,将对我们进阶为高级程序员有很大的帮助,本文将从Shell重定向 管道命令 awk编程 sed等方面展开介绍. 作者:有勇气的牛排 文章目录 1 shell重定向 ...
- linux grep文件过滤与分割命令
linux grep文件过滤与分割命令 文章目录 linux grep文件过滤与分割命令 1.grep命令 选项 grep命令常见用法 grep递归搜索文件 2.split命令 选项 实例 3.loo ...
- 利用Linux自带的logrotate管理日志
文章目录 利用Linux自带的logrotate管理日志 1. logrotate简介 2. logrotate配置参数 3. nginx日志切割实例 4. 其他配置示例 利用Linux自带的logr ...
- linux查询日志grep,linux grep日志查询
首页 > 系统相关> 文章详细 linux grep日志查询 2018-09-14 16:52:07阅读:135来源:互联网 标签: ll access.2018-09-*.gz zcat ...
最新文章
- ProjectEuler 4
- 如何快速重置打印队列
- 工作随笔——Intellij_idea-14官方快捷键中文版
- 汇编语言直接偏移量操作数
- 十、Hadoop学习笔记————Hive与Hbase以及RDBMS(关系型数据库)的关系
- Linux内核路由表介绍及相关函数
- java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作
- Android Glide图片加载框架(二)源码解析之into()
- c语言内置画直线函数库,C语言不调用库函数画直线
- 机器学习实战——AdaBoost
- 做python自动化得时候怎么添加断言_python接口自动化(二十四)--unittest断言——中(详解)...
- oracle删除闪回文件,oracle的闪回查询,闪回删除:
- 八皇后问题解法大全及编写八皇后小游戏
- LLC谐振变换器原理及变频控制
- NPDP知识推送-第一章新产品开发战略(2)
- 分享一个中英双语户外篷房帐篷睡袋网站模板源码带后台程序源码
- Linux系统调用详解(实现机制分析)--linux内核剖析(六)
- Assigned 函数
- KCon 2017兵器谱招募 亮出你的安全神兵
- An error occurred uploading to the App Store.