导语:有时候系统的日志信息的量是很庞大的,这时要查看具体问题可能比较麻烦。此时可以过滤掉无用的日志信息,从而获取预期想获取的信息。或者在排查问题时,查看具体的某一个错误。

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 完成日志过滤相关推荐

  1. linux grep sed awk

    linux 文本编辑命令grep sed awk(转)     grep grep (global search regular expression(RE) and print out the li ...

  2. Linux中的 awk查找日志中的相关记录

    假设要在 api.log.201707201830 文件中,(此文件的多个字段数据以不可见字符^A(键盘上按下Ctrl+V+A)分隔),要输出第70个字段: awk -F '^A' '{print $ ...

  3. 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 ...

  4. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  5. linux三剑客及正则表达(grep,sed,awk)

    首先我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令. 在说这三个命令前我们要插入一个小插曲就是"正则表达式 ...

  6. Linux Shell重定向 管道命令 grep搜索 awk编程 sed文件操作高阶函数

    在编程中如果能够熟悉shell高阶语法,将对我们进阶为高级程序员有很大的帮助,本文将从Shell重定向 管道命令 awk编程 sed等方面展开介绍. 作者:有勇气的牛排 文章目录 1 shell重定向 ...

  7. linux grep文件过滤与分割命令

    linux grep文件过滤与分割命令 文章目录 linux grep文件过滤与分割命令 1.grep命令 选项 grep命令常见用法 grep递归搜索文件 2.split命令 选项 实例 3.loo ...

  8. 利用Linux自带的logrotate管理日志

    文章目录 利用Linux自带的logrotate管理日志 1. logrotate简介 2. logrotate配置参数 3. nginx日志切割实例 4. 其他配置示例 利用Linux自带的logr ...

  9. linux查询日志grep,linux grep日志查询

    首页 > 系统相关> 文章详细 linux grep日志查询 2018-09-14 16:52:07阅读:135来源:互联网 标签: ll access.2018-09-*.gz zcat ...

最新文章

  1. ProjectEuler 4
  2. 如何快速重置打印队列
  3. 工作随笔——Intellij_idea-14官方快捷键中文版
  4. 汇编语言直接偏移量操作数
  5. 十、Hadoop学习笔记————Hive与Hbase以及RDBMS(关系型数据库)的关系
  6. Linux内核路由表介绍及相关函数
  7. java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作
  8. Android Glide图片加载框架(二)源码解析之into()
  9. c语言内置画直线函数库,C语言不调用库函数画直线
  10. 机器学习实战——AdaBoost
  11. 做python自动化得时候怎么添加断言_python接口自动化(二十四)--unittest断言——中(详解)...
  12. oracle删除闪回文件,oracle的闪回查询,闪回删除:
  13. 八皇后问题解法大全及编写八皇后小游戏
  14. LLC谐振变换器原理及变频控制
  15. NPDP知识推送-第一章新产品开发战略(2)
  16. 分享一个中英双语户外篷房帐篷睡袋网站模板源码带后台程序源码
  17. Linux系统调用详解(实现机制分析)--linux内核剖析(六)
  18. Assigned 函数
  19. KCon 2017兵器谱招募 亮出你的安全神兵
  20. An error occurred uploading to the App Store.

热门文章

  1. AI免费写代码chatGPT软件Build Software. Fast
  2. 优酷等视频网站的视频怎么下载
  3. java铁傀儡,我的世界铁傀儡
  4. 老人机轮询紧急拨号功能
  5. LeetCode高频题37. 解数独
  6. 软件神器推荐,轻巧简洁效率高,好不好用你说的算!
  7. 一些前端相关的面试题(含答案)
  8. oracle net服务器配置,Oracle配置本地Net服务名
  9. 向Gorm大声说拜拜,Aorm你值得拥有
  10. 什么时候报空指针异常?