linux:根据关键字或日期查找日志

linux:根据关键字或日期查找日志Q:Linux命令,根据关键字查询日志A:1.单个文件可以使用vi或vim编辑器打开日志文件,使用编辑器里的查找功能。在查看模式下,符号/后面跟关键字向下查找,符号?后面跟关键字向上查找,按n查找下一个,按N查找上一个。2.多个文件可以使用grep命令,比如grepERROR/var/log/messages*。会把匹配到ERROR这个关键字的行和所在的日志文件直接输出到屏幕。…

大家好,又见面了,我是你们的朋友全栈君。

Q:Linux命令,根据关键字查询日志

A:1.单个文件可以使用vi或vim编辑器打开日志文件,使用编辑器里的查找功能。在查看模式下,符号/后面跟关键字向下查找,符号?后面跟关键字向上查找,按n查找下一个,按N查找上一个。
    2.多个文件可以使用grep命令,比如 grep ERROR /var/log/messages*。会把匹配到ERROR这个关键字的行和所在的日志文件直接输出到屏幕。
    3.还可以使用cat命令后面使用grep过滤等方法,不如上面两个实用。上面两个较常用。

常用到的命令在这里记录一下:

1.VI:单个文件可以使用vi或vim编辑器打开日志文件,使用编辑器里的查找功能。在查看模式下,符号/后面跟关键字向下查找,符号?后面跟关键字向上查找,按n查找下一个,按N查找上一个。

2.grep命令:cat 1.log | grep key  可以写为: grep key 1.log 

根据字符串查询日志中关键词出现的位置:cat -n 日志文件| grep ‘keyword’

例:cat -n 1.log | grep ‘keyword’

检索日志,并显示该条日志的前后N(10)行记录:cat 日志文件 | grep -n -B10 -A10 “关键字”

3.查看某段时间内的日志: sed -n ‘/起始时间/,/结束时间/p’ 日志文件,

   查看某段时间内的关键字日志:sed -n ‘/起始时间/,/结束时间/p’ 日志文件| grep ‘keyword’

例:sed -n ‘/2018-06-21 14:30:20/,/2018-06-21 16:12:00/p’ catalina.out | grep ‘keyword’

4.

tail  -n  10  日志文件   查询日志尾部最后10行的日志;

tail -n +10 日志文件    查询10行之后的所有日志;

head -n 10  日志文件  查询日志文件中的头10行日志;

head -n -10  日志文件  查询日志文件除了最后10行的其他所有日志;

5. 

如果我们查找的日志很多,打印在屏幕上不方便查看, 有两个方法:

(1)使用more和less命令, 如: cat -n test.log |grep “地形” |more     这样就分页打印了,通过点击空格键翻页

(2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析.如:

cat -n test.log |grep “地形”  >xxx.txt

 

1.VI中

参考:https://www.cnblogs.com/moly/p/9186664.html

//以下删除命令好多都是剪贴,删除应该就是剪贴吧。。
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;
1,3 co 4 将1-3行复制到4行之后
set nu 显示行数
nu 查看行数
u 撤销
U 撤销,撤销上一次撤销, 就是撤销/恢复重复
gg 光标移动到第一行
G 光标到最后一行
1/2/3 任意数字,光标到指定数字行
“zz”命令会把当前行置为屏幕正中央,”zt”命令会把当前行置于屏幕顶端,”zb”则把当前行置于屏幕底端.
搜索: “?”命令与”/”的工作相同,只是搜索方向相反.n下一次出现的位置,”N”命令会重复前一次查找,但是与最初用”/”或”?”指定的搜索方向相反。
如果查找内容忽略大小写,则用命令”set ignorecase”, 返回精确匹配用命令”set noignorecase”
\ 用于转义特殊字符

2.linux中grep命令的用法

参考:https://www.cnblogs.com/flyor/p/6411140.html

作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。

首先谈一下grep命令的常用格式为:grep  [选项]  ”模式“  [文件]

grep家族总共有三个:grep,egrep,fgrep。

常用选项:

  -E :开启扩展(Extend)的正则表达式。

  -i :忽略大小写(ignore case)。

  -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

  -n :显示行号

  -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

  -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

  -o :只显示被模式匹配到的字符串。

  –color :将匹配到的内容以颜色高亮显示。

  -A  n:显示匹配到的字符串所在的行及其后n行,after

  -B  n:显示匹配到的字符串所在的行及其前n行,before

  -C  n:显示匹配到的字符串所在的行及其前后各n行,context

   linux:根据关键字或日期查找日志

   linux:根据关键字或日期查找日志

 

 

模式部分:

  1、直接输入要匹配的字符串,这个可以用fgrep(fast grep)代替来提高查找速度,比如我要匹配一下hello.c文件中printf的个数:grep  -c  “printf”  hello.c

  2、使用基本正则表达式,下面谈关于基本正则表达式的使用:

    匹配字符:

      . :任意一个字符。

      [abc] :表示匹配一个字符,这个字符必须是abc中的一个。

      [a-zA-Z] :表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。

      [^123] :匹配一个字符,这个字符是除了1、2、3以外的所有字符。

      对于一些常用的字符集,系统做了定义:

      [A-Za-z] 等价于 [[:alpha:]]

      [0-9] 等价于 [[:digit:]]

      [A-Za-z0-9] 等价于 [[:alnum:]]

      tab,space 等空白字符 [[:space:]]

      [A-Z] 等价于 [[:upper:]]

      [a-z] 等价于 [[:lower:]]

      标点符号 [[:punct:]]

      linux:根据关键字或日期查找日志

 

 

    匹配次数:

      \{m,n\} :匹配其前面出现的字符至少m次,至多n次。
      \? :匹配其前面出现的内容0次或1次,等价于\{0,1\}。
      * :匹配其前面出现的内容任意次,等价于\{0,\},所以 “.*” 表述任意字符任意次,即无论什么内容全部匹配。

      linux:根据关键字或日期查找日志

 

 

 

    位置锚定:

      ^ :锚定行首

      $ :锚定行尾。技巧:”^$”用于匹配空白行。

      \b或\<:锚定单词的词首。如”\blike”不会匹配alike,但是会匹配liker

      \b或\>:锚定单词的词尾。如”\blike\b”不会匹配alike和liker,只会匹配like

      \B :与\b作用相反。

      linux:根据关键字或日期查找日志

      linux:根据关键字或日期查找日志

 

 

    分组及引用:

      \(string\) :将string作为一个整体方便后面引用

        \1 :引用第1个左括号及其对应的右括号所匹配的内容。

        \2 :引用第2个左括号及其对应的右括号所匹配的内容。

        \n :引用第n个左括号及其对应的右括号所匹配的内容。

        linux:根据关键字或日期查找日志

 

 

  3、扩展的(Extend)正则表达式(注意要使用扩展的正则表达式要加-E选项,或者直接使用egrep):

    匹配字符:这部分和基本正则表达式一样

 

    匹配次数

      * :和基本正则表达式一样

      ? :基本正则表达式是\?,二这里没有\。

      {m,n} :相比基本正则表达式也是没有了\。

      + :匹配其前面的字符至少一次,相当于{1,}。

 

    位置锚定:和基本正则表达式一样。

 

    分组及引用

      (string) :相比基本正则表达式也是没有了\。

        \1 :引用部分和基本正则表达式一样。

        \n :引用部分和基本正则表达式一样。

 

    或者

      a|b :匹配a或b,注意a是指 | 的左边的整体,b也同理。比如 C|cat 表示的是 C或cat,而不是Cat或cat,如果要表示Cat或cat,则应该写为 (C|c)at 。记住(string)除了用于引用还用于分组。

     

注1:默认情况下,正则表达式的匹配工作在贪婪模式下,也就是说它会尽可能长地去匹配,比如某一行有字符串 abacb,如果搜索内容为 “a.*b” 那么会直接匹配 abacb这个串,而不会只匹配ab或acb。

注2:所有的正则字符,如 [ 、* 、( 等,若要搜索 * ,而不是想把 * 解释为重复先前字符任意次,可以使用 \* 来转义。

 

下面用一个练习来结束本次grep的学习:

在网络配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33 中检索出所有的 IP

1、检索出 0-255的范围

linux:根据关键字或日期查找日志

2、由0-255的数字组合成IP

linux:根据关键字或日期查找日志

3、简化

linux:根据关键字或日期查找日志

其他参考:https://jingyan.baidu.com/article/656db918fccd01e381249c2b.html

                  https://blog.csdn.net/janwen2010/article/details/72954125

                  https://blog.csdn.net/u013410747/article/details/71192140

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150224.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java mongodb 使用MongoCollection,BasicDBObject 条件查询

    java mongodb 使用MongoCollection,BasicDBObject 条件查询

  • 模电笔记(按知识点整理版)

    模电笔记(按知识点整理版) 这是个人整理的一份个人模电学习笔记,文档中所有未标明的链接均为CSDN电子版笔记,对应章节的网课学习教程会在对应章节进行附录。模拟电子线路 这是一门很离谱的学科,因此即使是绪论我们也不能放过,以此来有助于我们更好地去了解这门学科究竟是什么以及应该怎么学习。一、基础知识 绪论与学习方法 常用半导体及其器件关键词:本征半导体PN结P型半导体与N型半导体基础知识对应网课: 绪论二、常用器件 对于模拟电路的学习归根结底就是对于器件的学习。坦白来讲就是玩管子。所有的管子我们都可以

  • linux下的定时任务,Crontab用法

    linux下的定时任务,Crontab用法linux下的定时任务,Crontab用法

  • IPV6服务器搭建「建议收藏」

    IPV6服务器搭建「建议收藏」环境准备:1.安装虚拟机(virtualbox)2.在虚拟机中安装Ubuntu系统3.dhcp-4.2.5.tar源码 配置虚拟机环境:1.配置虚拟机gcc命令,快捷键:CTRL

  • ajax跨域解决方案domain_js解决跨域问题

    ajax跨域解决方案domain_js解决跨域问题简介JSON是一种轻量级的数据传输格式,被广泛应用于当前Web应用中。JSON格式数据的编码和解析基本在所有主流语言中都被实现,所以现在大部分前后端分离的架构都以JSON格式进行数据的传输。JavaScript的同源策略:只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。比如www.aa.com下的…

  • 什么是android原生系统版本,定制安卓和原生Android到底有哪些不同之处?彻底真相了…

    什么是android原生系统版本,定制安卓和原生Android到底有哪些不同之处?彻底真相了…相信大家都知道最近在搞机圈有个大新闻,就是小米即将于8月份推出MIUI9。近日小米MIUI市场副总监@黄龙中就在微博上征求米粉意见,暗示MIUI9可能长下面这样。小米最新官方主题《几何》,浓浓flyme风自2010年MIUI横空出世,国产定制安卓ROM在国内掀起了一阵风暴。MIUI成功后,乐蛙、点心等三方定制ROM迅速崛起,但随着手机系统生态逐渐稳定、刷机需求降低,定制安卓系统的范围逐渐缩小…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号