暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ Linux 命令 ] grep

巴韭特锁螺丝 2025-02-24
131

一、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/ftroot:x:0:0:root:/root:/bin/bashoperator: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, aabab aab

         

        位置锚定:

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

        [root@node1 ~]# egrep '^root' /etc/passwdroot: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


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

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

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

              [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.
                版权声明:本文内容来自博客园:hukey,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
                本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。
                原文链接:https://www.cnblogs.com/hukey/p/5835930.html
                如有涉及到侵权,请联系,将立即予以删除处理。
                在此特别鸣谢原作者的创作。
                此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。






                文章转载自巴韭特锁螺丝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论