zoukankan      html  css  js  c++  java
  • linux-shell脚本命令之grep

    版权声明: https://blog.csdn.net/zdp072/article/details/26015611

    [ grep简单介绍]

    grep是用来过滤含有特定字符的行, 能使用正則表達式搜索文本, 它在数据中查找一个字符串时, 是以正行为单位进行数据选取的.
    使用方法: grep [cinvs] 'pattern' file
    比如: grep -n 'bbb' aaa.txt --color                     # 从文件aaa.txt中搜索关键词bbb, 并显示行号和高亮显示。



    [ 经常使用选项]

    -c:仅仅输出匹配行的计数。
    -i:不区分大写和小写(仅仅适用于单字符)。
    -n:显示匹配行及行号。
    -s:不显示不存在或无匹配文本的错误信息。


    -v:显示不包括匹配文本的全部行。


    [ 正则元字符]

    grep能够结合正則表達式使用, 以下介绍一些经常使用的正則表達式过滤字符的使用方法

    :转义字符,忽略正則表達式中特殊字符的原有含义。
    ^ :匹配以某个字符串開始的行。
    $ 匹配以某个字符串结束的行。


    <:匹配单词的開始。


    >:匹配单词的结束。
    [ ]:在[]内某单个字符,如[A]即表示 A 符合要求。


    [ - ]:属于[ - ]所标记的范围字符,如[A-Z],即A、B、C一直到Z都符合要求。
    . :表示一定有1个随意字符。
    * :前面字符能够出现随意次。

    ? :前面字符出现0次或1次
    + :前面字符出现一次或多次。

    [ 正则演示样例]

    1.  ^表示行开头
         grep   '^bbb'   aaa.txt  --color                 # 从文件aaa.txt中查找以bbb开头的行。


    2.  $表示行结尾
         grep   'bbb$'   aaa.txt  --color                # 从文件aaa.txt中查找以bbb结尾的行。

    3.  .表示单个字符, 它能够匹配除换行符之外的全部字符

         grep   'bbb...'   aaa.txt  --color                # 从文件aaa.txt中查找bbb后面含有三个字符的行, '点'能够匹配空格。


    4.  * 表示它前面的那个字符能够出现随意次
         grep   'bbb.*'   aaa.txt  --color                # 从文件aaa.txt中查找bbb后面有随意个字符的行

    5.  + 表示它前面的那个字符至少要出现一次
         grep  -E  'bbb.+' aaa.txt --color              # 从文件aaa.txt中查找bbb后面至少会出现一个字符的行

    6.  ?

    表示它前面的那个字符能够有也能够没有

         grep -E 'bbbc?' aaa.txt --color               # 从文件aaa.txt中查找存在bbb或bbbc的行
         注意: grep不支持 + 、? 这两个元字符, 假设想使用, 仅仅能使用扩展的grep  (egrep 或 grep -E)

    7.  [ ] 表示匹配一个字符, 出如今[ ]里面的字符都是或的关系
         grep  '^[Bb]bb'  aaa.txt  --color             # 从文件aaa.txt中查找以Bbb或bbb开头的行

         grep '[0-9]' aaa.txt --color                     # 从文件aaa.txt中查找含有数字的行
         grep -P 'd' aaa.txt --color                     # 从文件aaa.txt中查找含有数字的行, -P表示使用perl的正則表達式
         
         d表示数字, D表示非数字
         s表示空格或tab, S表示不是空格或tab
         w表示随意字符(大写和小写字母、数字、下划线), W表示不是字母、数字、下划线。


         注意: ^ 出如今 [ ] 外面的话表示'开头', 假设出如今 [ ] 里面的话表示'否定'
         grep '^[^Bb]..' aaa.txt  --color               # 从文件aaa.txt中查找不是以B或b开头, 并且后面还有两个字符的行


    8.  < 匹配单词的开头
         grep '<Tom' aaa.txt --color                  # 从文件aaa.txt中查找单词以Tom开头的行


    9.  > 匹配单词的结束
         grep '>Tom' aaa.txt --color                 # 从文件aaa.txt中查找单词以Tom结尾的行

    10.  匹配某个单词, 而不是某个字符串的一部分
         grep 'Tom' aaa.txt --color            # 从文件aaa.txt中查找含有单词Tom的行, 假设是aTomb之类的忽略掉


    11.  用()做标签, 后面想引用就用 (n是一个数字), 1表示第一个被引起来的
         grep '(tom)...1' aaa.txt --color        # 从文件aaa.txt中查找tom, 且它的后面有三个字符, 然后另一个tom的行. 如: tomxxxtom

    12.  {n} 表示前面的字符要出现n次
         grep 'tomx{3}' aaa.txt --color         # 从文件aaa.txt中查找tomx, x要出现3次, 如: tomxxx
         grep 'tomx{3,}' aaa.txt --color        # 从文件aaa.txt中查找tomx, x至少要出现三次, 如tomxxx 或 tomxxxx
         grep 'tomx{3,4}' aaa.txt --color      # 从文件aaa.txt中查找tomx, x出现3次或4次, 如tomxxx 或 tomxxxx
查看全文
  • 相关阅读:
    spring-boot集成8:集成shiro,jwt
    spring-boot集成6:集成redis实现字典缓存功能
    公告:《那些年,追寻Jmeter的足迹》上线
    那些年,追寻JMeter的足迹,免费送……
    Jmeter系列培训(1)--开山篇
    FlytestingToolkit工具派送,懒人的测试思考
    飞测历史分享,目录整理篇
    jenkins系列(11)-自动打tag升级篇
    大数据测试笔记(1)-测试的3条建议
    聊聊我们的线上巡检(2)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10794685.html
  • Copyright © 2011-2022 走看看