grep:文本过滤工具 支持BRE
  egrep: 支持ERE
  fgrep: 不支持正则

    作用:根据用户指定的“模式”,对目标文本逐行进行匹配检查,打印匹配到的行
    模式:由正则表达式字符及文本字符所编写的过滤条件
        [OPTIONS] PATTERN [FILE...]
    options:

      -v:显示不被PATTERN匹配的行 排除

# 显示/etc/passwd文件中不以/bin/bash结尾的行

grep  -v '/bin/bash$' /etc/passwd

      -i:忽略字符大小写
      -n:显示匹配的行号
      -c:显示匹配的行数
      -o:仅显示被匹配的字符串
      -q:静默模式,不输出任何信息
      -A #:after,后#行
      -B #:before,前#行
      -C #:context,前后各#行
      -e:实现多个选择间的逻辑or关系
      -w:整行匹配整个单词
      -E:使用扩展的正则表达式 相当于egrep  
      -F:使用fgrep,不支持正则表达式 相当于fgrep
      --color:将过滤出内容加上颜色显示

alias grep='grep --color=auto'
 
[root@centos6 ~ ::]#grep -i "^s" /proc/meminfo
SwapCached: kB
SwapTotal: kB
SwapFree: kB
Shmem: kB
Slab: kB
SReclaimable: kB
SUnreclaim: kB
[root@centos6 ~ ::]#grep "^[sS]" /proc/meminfo

  基本正字表达式BRE:

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

    以下是元字符:
      [:digit:]:数字
      [:lower:]:小写字母
      [:upper:]:大写字母
      [:alpha:]:所有字母
      [:space:]:空白字符
      [:alnum:]:所有字母及数字
      [:punct:]:所有标点符号
      [:graph:]:可打印的非空白字符;
      [:blank:]:水平空白字符(空格和制表符)
      [:cntrl:]:不可打印的控制字符(退格、删除、警铃)
      [:pirnt:]:打印字符
      [:xdigit:]:十六进制数字

# 显示/etc/grub2.cfg文件中,至少一个空白字符开头的且后面存非空白字符的行
grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg # 找出“netstat -ant” 命令的结果中以“listen”后跟0,1或多个空白字符结尾的行 netstat -ant |grep "listen[[:space:]]*$"    # 注意,使用元字符时,字符本身的中括号外,还需要加一层中括号 # 添加用户bash,testbash,basher以及nologin,而且找出/etc/passwd 文件中用户名同shell名的行
useradd bash
useradd testbash
useradd basher
useradd -s /sbin/nologin login
grep "^\([[:alnum:]]\+\>\).*\1$" /etc/passwd
# 显示/var目录下所有以L开头,以一个小写字母结尾,且中间出现至少以为数字的文件或目录

ls -d /var/L*[0-9]*[[:lower:]]

# 显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]
ls -d /etc/[[:digit:]]*[^[:digit:]] # 显示/etc目录下,以非字母开头,后面跟了一个字母及其其他任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]]*
 

    次数匹配:

    用在要指定次数的字符后面,用于指定前面的字符要出现的次数

      *:匹配前面的字符任意次
      .*:匹配任意长度的任意字符
      \?:匹配前面的字符0次或1次
      \+:匹配前面的字符至少1次,至多不限
      \{M\}:匹配前面的字符M次
      \{M,\}:匹配前面的字符至少M次,至多不限
      \{M,N\}:匹配前面的字符至少M次,至多N次
    

    位置锚定:
      ^:行首锚定,用于模式的最左侧
      $:行尾锚定,用于模式的最右侧
      ^$:空白行,连space也不允许出现
      ^[[:space:]]*$:空白行或包含空白字符的行
      \<或\b:词首锚定,出现在单词的左侧
      \>或\b:词尾锚定,出现在单词的右侧
      \<PATTERN\>:完整匹配单词

# 去除nginx.conf里面的的空行和注释行

   grep -Ev "^$|#" nginx.conf
  ^$  空行
  |  或者
  #  注释行开头字符

    分组及引用:

      \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理
      

    后向引用:

      引用前面的分组括号中的模式所匹配的字符

分组括号中的模式匹配到的内容会被正则表达式引擎记录与内部的变量中,这些变量的命名
    方式为\1,\2,\3
      \1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配的字符
      \(ab\+\(xy\)*\)
      \1: ab\+\(xy\)*\
      \2: xy

  egrep及扩展正则表达式(Extandard RegExp):

    字符匹配:

      .:任意单个字符
      []:指定范围内的任意单个字符
      [^]:指定范围外的任意单个字符

    次数匹配:

      *:任意次
      ?:0次或1次
      +:其前一次最少一次或多次
      {m}:匹配其前字符m次
      {m,n}:匹配其前字符最少m次,最多n次

    位置锚定:
      ^:行首锚定,用于模式的最左侧
      $:行尾锚定,用于模式的最右侧
      ^$:空白行,连space也不允许出现
      \<或\b:词首锚定,出现在单词的左侧
      \>或\b:词尾锚定,出现在单词的右侧
   

    分组及引用:

    ():分组;括号内的模式匹配到的字符会被记录到正则表达式引擎的内部变量中
    后向引用:\1,\2,\3....
    或:
    | a|b a或者b

最新文章

  1. js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
  2. 完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程
  3. chrome扩展程序开发
  4. [NOIP2015] 提高组 洛谷P2680 运输计划
  5. t-sql中字符串前加N代表什么意思
  6. android反编译工具总结
  7. java 基础学习
  8. freeswitch 配置 DID 方法
  9. ubunutu_install_sublime_china
  10. AX2012服务器配置--Windows Server 2012 如何实现多个用户远程桌面登陆?
  11. 03-Foundation中NSMutableArray遍历、复制和排序
  12. Java发展的时间表
  13. Openlayers系列(一)关于地图投影的理解
  14. thinkphp5z
  15. Element-UI动态更换主题
  16. Python&#160;捕捉traceback异常栈信息
  17. servlet injection analysis
  18. Project_Lemon测评系统使用经验
  19. php 循环数组问题
  20. 浅谈 js 下 with 对性能的影响

热门文章

  1. OG数据预处理
  2. Android网络请求库RetrofitUtils
  3. Python 执行主程序
  4. ActionContext和ServletActionContext小结(转)
  5. 如何制作 Objective-C 的UML图 [1]
  6. Swift-EasingAnimation
  7. [翻译] ValueTrackingSlider
  8. 铁乐学python_Day43_协程
  9. Opengl---gluLookAt函数详解(转)
  10. [EffectiveC++]item32:确定你的public继承模塑出is-a关系