• linux搜索过滤--grep


      grep在服务端查询消息时经常会被使用到,这里总结几个常用,简单的命令,熟练掌握可以使查询更为高效。

      基本格式:

    grep [option] pattern file

      几个重要的命令参数,这里不列举全部,只列举可能会常用的,便于快速查询:

      除了不加任何参数表示搜索符合之后的样式的内容之外,剩下的参数:

    -v   --revert-match   #显示不包含匹配文本的所有行。 
    -i    --ignore-case   #忽略字符大小写的差别。   
    -n   --line-number   #在显示符合样式的那一行之前,标示出该行的列数编号。
    -c    --count   #计算符合样式的列数。

      举例:

    [xxx@application01 yyy]$ grep -c 'mongo' nohup.out 
    grep: nohup.out: Permission denied
    [xxx@application01 yyy]$ sudo grep -c 'mongo' nohup.out 
    10633
    [xxx@application01 yyy]$ sudo grep -v 'not' stop.sh 
    #!/bin/sh
    PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk '{ print $2}'`
    num=`ps -ef|grep zzz|grep -v grep|wc -l`
    for i in $PROCESS
    do
      echo "Kill the consumer process [ $i ]"
      kill -9 $i
    done
    echo "$num processes be killed"
    
    [xxx@application01 yyy]$ sudo grep -i ppid stop.sh 
    PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk '{ print $2}'`
    [xxx@application01 yyy]$ sudo grep -n -i ppid stop.sh 
    2:PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk '{ print $2}'`

      如果将grep与正则表达式结合,可以使得该工具变得更加强大,这里记录几个常用的正则表达式,可以和grep参数配合使用:

    < #锚定单词的开始
        如:'<grep'匹配包含以grep开头的单词的行。    
    > #锚定单词的结束
        如'grep>'匹配包含以grep结尾的单词的行
    ^  #锚定行的开始 
        如:'^grep'匹配所有以grep开头的行。    
    $  #锚定行的结束 
        如:'grep$'匹配所有以grep结尾的行。
    [] #匹配一个指定范围内的字符
        如'[Gg]rep'匹配Grep和gre

      举例:

    [xxx@application01 yyy]$ sudo grep -n '<grep' stop.sh 
    2:PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk '{ print $2}'`
    3:num=`ps -ef|grep zzz|grep -v grep|wc -l`
    [xxx@application01 yyy]$ sudo grep -n '^e' stop.sh 
    9:echo "$num processes be killed"
    [xxx@application01 yyy]$ sudo grep -n 'i$' stop.sh 
    7:  kill -9 $i
    [xxx@application01 yyy]$ sudo grep -n [Gg]rep stop.sh 
    2:PROCESS=`ps -ef|grep zzz|grep -v grep|grep -v PPID|awk '{ print $2}'`
    3:num=`ps -ef|grep zzz|grep -v grep|wc -l`

      最后,如果需要将查询内容输出到文本中就可以:

    [xxx@application01 yyy]$ ll
    total 59976
    -rwxrwxrwx 1 root root        0 Oct 19 17:20 1.txt
    drwxr-xr-x 2 root root     4096 May 31 20:46 lib
    -rw-r--r-- 1 root root    39936 Jul 18 15:30 zzz.jar
    -rw-r--r-- 1 root root    39792 Jun  3 14:38 zzz.jar.20160714
    -rw-r--r-- 1 root root    39835 Jul 14 09:31 zzz.jar.20160718
    -rw------- 1 root root 61218369 Oct 19 17:20 nohup.out
    -rw-r--r-- 1 root root      275 Jun  1 15:05 stop.sh
    [xxx@application01 yyy]$ sudo grep 'mongo' nohup.out >1.txt 
    [xxx@application01 yyy]$ ll
    total 61184
    -rwxrwxrwx 1 root root  1159937 Oct 19 17:20 1.txt
    drwxr-xr-x 2 root root     4096 May 31 20:46 lib
    -rw-r--r-- 1 root root    39936 Jul 18 15:30 zzz.jar
    -rw-r--r-- 1 root root    39792 Jun  3 14:38 zzz.jar.20160714
    -rw-r--r-- 1 root root    39835 Jul 14 09:31 zzz.jar.20160718
    -rw------- 1 root root 61286858 Oct 19 17:20 nohup.out
    -rw-r--r-- 1 root root      275 Jun  1 15:05 stop.sh

       在实际的过滤中,很多时候我们会将无用的(或者有用的)信息删除(保留)下来,可能会涉及到多个关键字,最简单的做法就是用或的关系将各个条件并列出来。例如在日志信息中,将含有socket,session,zookeeper的信息过滤掉:

    grep -Evi 'socket|session|zookeeper' validateChiqTest.log

    这里的E参数以及之后的'|'即属于或操作,-i为忽略大小写,-v指将这些信息筛选不保留。

  • 相关阅读:
    NS3 使用NS3工具PyViz
    ns-3 NetAnim遇到了一个问题
    NS-3 MyFirstScriptExample
    Ubuntu下Eclipse安装与编译ns-3遇见的各种问题
    Ubuntu 12.04 安装JDK
    近期学习的参考博客链接
    Win7上安装WMware虚拟机和Ubuntu操作系统
    C++课程小结 继承与派生
    C语言中生产随机数 rand()函数
    PTA第三次上机
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/5977916.html
Copyright © 2020-2023  润新知