zoukankan      html  css  js  c++  java
  • [ Linux 命令 ] grep

    一、grep是什么?

      Linux grep命令是用于查找文件里符合条件行的shell命令。

    二、为什么要使用grep?

      在查找文件内容时候,通过使用grep指定条件,可以快速定位到文件里字符串所在的行,提高效率。

    三、grep的基本用法

    grep命令有三个:grep,egrep,fgrep

    grep:根据模式,搜索文本,并将复合模式的问本行显示出来。

        -i: 忽视大小写
        --color: 高亮色显示匹配内容
        -v: 反向查找,没有被模式匹配到的行
        -o: 只显示被模式匹配到的字符串
        -A: 显示匹配到的行下面N行

        -B: 显示匹配到的行上面N行
        -C: 显示匹配到的行上下行

    正则表达式:

    *: 匹配其前面的字符任意次

    [root@node1 ~]# cat test 
    ab
    aab
    acb
    adb
    anmb
    nmbnmbnmnbbbsdfb
    [root@node1 ~]# egrep 'a*b' test   # 其面前字符的任意长度例如:b ab aab aaaab
    ab
    aab
    acb
    adb
    anmb
    nmbnmbnmnbbbsdfb


    ?: 匹配其前面的字符1次或0次

    [root@node1 ~]# egrep 'a?b' test    # 匹配其前面的字符1次或者0次,如:ab b 
    ab
    aab
    acb
    adb
    anmb
    nmbnmbnmnbbbsdfb

    .: 匹配任意单个字符

    [root@node1 ~]# egrep 'r..t' /etc/passwd   # 匹配如:root rabt r/ft
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    [-]: 匹配指定范围的任意单个字符

    [root@node1 ~]# netstat -ntplu | egrep '4[0-9]00'
    tcp        0      0 10.0.0.10:4000              0.0.0.0:*                   LISTEN      2137/httpd          
    tcp        0      0 10.0.0.10:4100              0.0.0.0:*                   LISTEN      2137/httpd          
    tcp        0      0 10.0.0.10:4200              0.0.0.0:*                   LISTEN      2137/httpd          
    tcp        0      0 10.0.0.10:4300              0.0.0.0:*                   LISTEN      2137/httpd

    [^-]: 匹配指定范围的任意单个字符

    [root@node1 ~]# netstat -ntplu | egrep '4[^1-3]00'
    tcp        0      0 10.0.0.10:4000              0.0.0.0:*                   LISTEN      2137/httpd

    {}: 匹配其前面字符的多少次

    [root@node1 ~]# egrep 'a{1,2}b' test  # 匹配内容 ab, aab 
    ab
    aab

    位置锚定:

    ^: 锚定行首,此字符后面的任意内容必须出现在行首

    [root@node1 ~]# egrep '^root' /etc/passwd
    root:x:0:0:root:/root:/bin/bash

    $: 锚定行尾,此字符后面的任意内容必须出现在行尾

    [root@node1 ~]# egrep 'shutdown$' /etc/passwd   # 匹配以shutdown结尾的行
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    ^$: 空白行

    [root@node1 ~]# cat abc.txt 
    a
    
    b
    
    c
    [root@node1 ~]# egrep '^$' abc.txt 
    
    
    [root@node1 ~]# egrep '^$' abc.txt | wc -l    # 可以统计出来有两行是空格行
    2

    <或: 其后面的任意字符必须作为单词首部出现

    [root@node1 ~]# cat test.txt 
    This is root.
    The user is mroot.
    rooter is a dog's name.
    mrooter is not a word.
    [root@node1 ~]# egrep 'root>' test.txt    # 匹配词尾的
    This is root.
    The user is mroot.

    >或: 其前面的任意字符必须作为单词尾部出现

    [root@node1 ~]# cat test.txt   # 记住这里的词首不是行首。因此 This is root. 是没问题的
    This is root.
    The user is mroot.
    rooter is a dog's name.
    mrooter is not a word.
    [root@node1 ~]# egrep '<root' test.txt 
    This is root.
    rooter is a dog's name.
  • 相关阅读:
    安装和使用 PyInstaller 遇到的问题
    Mininet 系列实验(七)
    Mininet 系列实验(六)
    Mininet 系列实验(五)
    Mininet 系列实验(三)
    Mininet 系列实验(一)
    Linux进程间通信(消息队列/信号量+共享内存)
    bugku 输入密码查看flag
    bugku 头等舱
    bugku 你必须让他停下
  • 原文地址:https://www.cnblogs.com/hukey/p/5835930.html
Copyright © 2011-2022 走看看