精华内容
下载资源
问答
  • linux:根据关键字或日期查找日志

    万次阅读 多人点赞 2018-08-01 18:02:40
    Q:Linux命令,根据关键字查询日志 A:1.单个文件可以使用vi或vim编辑器打开日志文件,使用编辑器里的查找功能。在查看模式下,符号/后面跟关键字...会把匹配到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

       

       

     

     

    模式部分:

      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:]]

          

     

     

        匹配次数:

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

          

     

     

     

        位置锚定:

          ^ :锚定行首

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

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

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

          \B :与\b作用相反。

          

          

     

     

        分组及引用:

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

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

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

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

            

     

     

      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的范围

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

    3、简化

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

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

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

     

    展开全文
  • “ 最近开始用kpt记录自己的日常工作,本文将是该系列的第一篇,主要讲解linux下如何快速逻辑处理数据”Keep正在做日志筛选数据的事情,需要从服务日志中捞出含关键字的日志,并且该条日志中含响应时间数据,需捞出...

    最近开始用kpt记录自己的日常工作,本文将是该系列的第一篇,主要讲解linux下如何快速逻辑处理数据

    Keep

    正在做日志筛选数据的事情,需要从服务日志中捞出含关键字的日志,并且该条日志中含响应时间数据,需捞出其中大于500ms的数据

    Problem

    普通的grep只能捞出所有包含关键字的日志,没法做一些简单的逻辑判断,如果用编程语言来处理又会显得很笨重

    Try

    linux下有一个利器命令awk可以使用;

    对于test.log日志内容类似如下的:

    2019-05-03 20:00:00 requestId:a1 bb cc dd 4652019-05-03 20:00:01 requestId:aa bb cc kkk2019-05-03 20:00:01 requestId:a2 bb cc dd 5022019-05-03 20:00:01 requestId:a3 bb cc dd 600

    上述内容中数字表示响应时间,如果需要打印响应时间大于500的requestId的值,基于awk该怎么写:

    cat test.log |grep dd|awk '$7>500 {print $3}'

    接下来让我们带着疑问来学习入门下awk命令:

    awk 'BEGIN{ commands } pattern{ commands } END{ commands }'# 这是awk的标准格式,BEGIN和END是可选的# 1、通过关键字 BEGIN 执行 BEGIN 块的内容,即 BEGIN 后花括号 {} 的内容。# 2、完成 BEGIN 块的执行,开始执行body块。# 3、读入有  换行符分割的记录。# 4、将记录按指定的域分隔符划分域,填充域,$0 则表示所有域(即一行内容),$1 表示第一个域,$n 表示第 n 个域。# 5、依次执行各 BODY 块,pattern 部分匹配该行内容成功后,才会执行 awk-commands 的内容。# 6、循环读取并执行各行直到文件结束,完成body块执行。# 7、开始 END 块执行,END 块可以输出最终结果。
    b0bb2d1090b1bf94f1cf208f70d3e810.png

    重新来分析下上面写awk命令

    cat test.log |grep dd|awk '$7>500 {print $3}'# 先通过grep获取到所有包含dd的内容# 接下来使用awk命令,这里直接用body模块,处理每一行数据# awk默认的分割符刚好是空格,所以我们直接用$7可以直接拿到响应时间# 判断完后简单多了,我们直接$3拿到每一个requestId# 如果吹毛求疵下,只想拿到对应的requestId的值该怎么写?cat test.log |grep dd|awk '$7>500 {print $3}'|awk -F:'{print $2}'# 我们在上述命令基础上再加上管道符,并利用-F来指定新的分隔符:,刚好将requestId:a1这样的字符串切割成两个# 然后直接print $2即可

    一些awk的高级用法

    正则匹配:

    cat test.log |awk '/dd/ && $7>500 {print $3}'|awk -F: '{print $2}'# awk命令支持正则匹配,所以上述解决方案中,其实不需要grep命令,直接按照上述编写即可,&&表示并且

    if函数:

    cat test.log |awk '/dd/ {if($7>500)print $3}'|awk -F: '{print $2}'# awk自带if函数,上述解决方案我们还可以这样编写。将if函数放到body的{}中

    BEGIN的用法:

    f12565806cb06cc6a5f9fcfb1aeca45f.png

    END的用法

    cat test.log |awk 'BEGIN {print "im begin"} /dd/&&$7>500 {num=num+1;total=total+$7} END {print num;print total}'# awk支持自定义变量,上述命令是统计响应时间大于500的日志记录数,以及累计响应时长# 我们也可以先在BGGIN模块初始化自定义变量cat test.log |awk 'BEGIN {print "im begin";num=0;total=0} /dd/&&$7>500 {num=num+1;total=total+$7} END {print num;print total}'

    参考资料:

    https://www.runoob.com/linux/linux-comm-awk.html

    https://coolshell.cn/articles/9070.html

    展开全文
  • linux用grep查找包含两个关键字的命令 http://zhidao.baidu.com/link?url=VsFxeJXmU7W7hy1UH7eT6QAbUsVz9Ru2ABPuWYHWm4kBvE0ccLDwcvFi821FT5uWvgjJkNEgx80ICQaaR3HxMCr1BnLe8naTKZUwxseZ4qe ...

    linux用grep查找包含两个关键字的命令

    http://zhidao.baidu.com/link?url=VsFxeJXmU7W7hy1UH7eT6QAbUsVz9Ru2ABPuWYHWm4kBvE0ccLDwcvFi821FT5uWvgjJkNEgx80ICQaaR3HxMCr1BnLe8naTKZUwxseZ4qe

    http://www.linuxidc.com/Linux/2016-01/127944.htm

    ##查询历史记录

    http://blog.sina.com.cn/s/blog_5caa94a00100gyls.html

     history | grep zydeal

    转载于:https://www.cnblogs.com/boothsun/p/5804503.html

    展开全文
  • Linux搜索日志关键字的2种方法

    千次阅读 2020-07-15 10:43:45
    C 行数 cat info.log | grep '定时任务' -C 10 # 根据关键字查看前后10行日志(注:C--Context) 2.grep(根据关键词查看日志) 1.1 grep '关键词' 文件名 grep '定时任务' info.log #根据关键字搜索日志 1.2 ...

    1.cat

     1.1 查看日志前n行

         cat 文件名 | head -n 数量

         cat  info.log | head -n 200  # 查看info.log前200行

     1.2 查看日志尾n行

         cat 文件名 | tail -n 数量

       cat  info.log | tail -n 200  # 查看info.log后200行

     1.3 根据关键词查看日志,并返回关键词所在行

         1.3.1 cat 文件名 | grep '关键词'

                  cat  info.log | grep '定时任务'  # 返回info.log中包含"定时任务"的所有行

         1.3.2 cat 文件名 | grep '关键词'  -B  行数

                  cat info.log | grep '定时任务' -B 10  # 根据关键字查看前10行日志(注:B--Before)

         1.3.3 cat 文件名 | grep '关键词"  -A  行数

                  cat info.log | grep '定时任务' -A 10  # 根据关键字查看后10行日志(注:A--After)

         1.3.4 cat 文件名 | grep '关键词'  -C  行数

                  cat info.log | grep '定时任务' -C 10  # 根据关键字查看前后10行日志(注:C--Context)

    2.grep(根据关键词查看日志)

     1.1 grep '关键词' 文件名

               grep '定时任务'  info.log   #根据关键字搜索日志

     1.2 grep -B  行数 '关键词' 文件名

               grep -A 10 '定时任务'  info.log  #根据关键字查看前10行日志(注:B--Before)

     1.3 grep -A  行数 '关键词' 文件名

               grep -B 10 '定时任务'  info.log  #根据关键字查看后10行日志(注:A--After)

     1.4 grep -C  行数 '关键词' 文件名

               grep -C 10 '定时任务'  info.log  #根据关键字查看前后10行日志(注:C--Context)

      注:grep不光支持单文件搜索同样也支持多文件搜索

             例:grep '定时任务'  *.log

    展开全文
  • Linux 查询日志 关键字出现次数

    万次阅读 2018-06-11 17:51:43
    种方法:第一种:perl -e '$/=undef...' filenametheWord是你要搜索的词,一般是异常信息,filename是日志名称,第二种:查找单个关键词:grep -o objStr filename|wc -l查找多个关键字 直接用| 链接起来即可gr...
  • Linux的volatile关键字

    2015-07-10 11:32:54
    如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写...
  • Linux grep根据关键字匹配前后几行

    万次阅读 2017-07-31 18:09:16
    Linux环境下,查看文件内容时,很多时候需要查看指定关键字的前后几行,如查看日志文件时,如果日志文件太大,想直接在Linux 终端中查看,可以grep ‘partten’ filename 进行过滤,如果想查看匹配行的前后几行,...
  • 添加一文件系统是一个两步骤的过程。首先创建一特定的分区方案的挂载点。挂载点会出现在左窗格中。接下来,你可以用在右窗格中,您可以在其中选择一名称,设备类型,文件系统类型,标签的选项进行自定义,以及...
  • Linux中volatile关键字的作用

    千次阅读 2015-01-29 15:05:09
    精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则编译器将对所声明的语句进行优化。(简洁的说就是:volatile关键词...
  • Linux】grep 匹配多个关键字

    万次阅读 2018-12-11 18:57:04
    一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢? 下面看几种情况: 1、 grep ‘字符串’ 这是最普通的使用方式: 匹配文件中包含 MANPATH 的那一行: cat manpath.config | grep 'MANPATH' 2...
  • 假设存在日志文件 info.log,查询的关键字为"新增用户": 根据关键字查看日志 cat info.log | grep "新增用户" 根据关键字查看后10行日志 cat info.log | grep "新增用户" -A 10 根据关键字查看前10行日志 cat info....
  • 重定向dmesg.txt关键字Call Trace的前后2000行到nn.txt: grep -C 2000 ‘Call Trace’ dmesg.txt >nn.txt
  • 以上,还可以在末尾加上-A(展示日志关键字后几行的内容)、-B(展示日志关键字前几行的内容)、-C(展示日志关键字前后几行的内容),要注意大小写。 demo:cat test.log | grep “http” -C 10 #展示关键字http...
  • linux的配置文件中,很多需要查询并且配置的信息,所以可以利用查找关键字的方法来查询,定位在哪一行 方法 ...恭喜您学会了两个定位的方法 一种是根据关键字进行定位 一种是根据行数来进行定位 ...
  • 1、平时项目都在linux服务器上,所以想要查问题就要在vim下进行查找某一个关键字,我们可以在vim下进入命令模式下,输入要查询的关键字,如果想看这个关键字在哪些地方出现过,可以用shift+#来向上翻页查询关键字,...
  • Linux grep命令用于查找文件里符合条件的字符串。grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称...
  • Linux下如何查找包含某个关键字的文件呢?
  • linux中shell命令,查询多个关键字 grep -E "字符串1|字符串2|字符串3|" 或者 egrep "字符串1|字符串2|字符串3|
  • 现在网上这样的方法只有种,一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一、Mahuinan法: 用sed命令可以批量替换多文件中的字符串。sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在...
  • Linux(一):关键字检索

    2021-01-11 17:11:48
    关键字检索 Linux命令 根据关键字查询日志 ...会把匹配到ERROR这个关键字的行和所在的日志文件直接输出到屏幕。 还可以使用cat命令后面使用grep过滤等方法,不如上面两个实用。上面两个较常用。 常用命令 VI:单个文
  • Linux: grep多个关键字“与”和“或”

    千次阅读 2018-04-08 13:17:35
    grep -i pattern files:不区分大小写地搜索。默认情况区分大小写 grep -l pattern files:只列出匹配的文件名 grep -L pattern files:列出不匹配的文件名 grep -w pattern files:只匹配整个单词,而不是字符串的...
  • 1, 显示filename文件中,abc行上下3行内容(含abc行) grep -C 3 abc filename 显示filename文件中,abc行下3行内容(含abc行) grep -A 3 abc filename 显示filename文件中,abc行上3行内容(含abc行) ...
  • linux 终端高亮显示关键字

    千次阅读 2012-02-26 16:53:58
    在fedora中,用VI编辑器编辑程序时,关键字不会高亮显示, 如: vi abc.c #include 网络上说这条命令可以解决 rm -f /bin/vi ln -s /usr/bin/vim /bin/vi 就是把VI链接到VIM编辑器 后来我试了一下...
  • Linux日志中存储了大量信息,但是在于如何快速提取信息。可以使用许多工具来执行此操作,从命令行工具到更多工具先进的分析工具能够搜索特定字段,计算汇总,生成图表等。本篇主要想集中于awk、grep、sed三种查询...
  • linux 查找关键字目录/文件

    千次阅读 2011-05-16 20:50:00
    查找目录:find /(查找范围) -name '查找关键字' -type d 查找文件:find /(查找范围) -name 查找关键字 -print 如果需要更进一步的了解,可以参看Linux的命令详解。 这里摘抄如下: ·find path -option [ -...
  • -- service/debug_console.lua function COMMAND.list() return skynet.call(".launcher", "lua", "LIST") end

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,875
精华内容 60,350
关键字:

linux两个关键字搜索

linux 订阅