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

文本处理三剑客之 grep/egrep的更多相关文章

  1. Linux文本处理三剑客之grep及正则表达式详解

    Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...

  2. Linux文本处理三剑客之——grep

    一Linux文本处理三剑客之——grep Linux文本处理三剑客都支持正则表达式 grep :文本过滤( 模式:pattern) 工具,包括grep, egrep, fgrep (不支持正则表达式) ...

  3. shell 文本处理三剑客之 grep 和 egrep

    shell 三剑客之 grep 命令语法格式 grep 参数 案例 显示file中有python的行 grep python file 显示没有python的行,不忽略大小写 grep -v pyth ...

  4. 文本处理三剑客之 grep

    grep简介 grep(Global search REgular expression and Print out the line)是Linux上的文本处理三剑客之一,另外两个是sed和awk. ...

  5. 【Linux相识相知】文本处理工具之grep\egrep\fgrep及正则表达式

    常说Linux上有文本处理的三剑客,grep.sed和awk,本文就grep做出详细的描述,并引出正则表达式. grep NAME:打印模式匹配的行 SYNOPISIS: grep [OPTIONS] ...

  6. Linux 文本处理三剑客之grep

    文本处理都要使用正则表达式,正则表达式有: 基本正则表达式:grep或者egrep -G 扩展正则表达式:egreo或者grep -E Linux 文本处理三剑客: sed:stream editor ...

  7. linux文本处理三剑客之 grep

    文本处理无非是对文本内容做查看.修改等操作.Linux三剑客: grep.sed 和 awk 命令. 处理文本内容,用 Vim 编辑器不是很好吗?Vim 允许我们使用键盘.鼠标来对文本内容进行交互性地 ...

  8. Linux文本处理三剑客之grep

    简介 grep命令,用于在一个文本文件中或者从STDIN中,根据用户给出的模式(pattern)过滤出所需要的信息. grep以及三剑客中的另外两个工具sed和awk都是基于行处理的,它们会一行行读入 ...

  9. 文本处理三剑客之grep&正则表达式

    grep是一个文本过滤工具,它支持正则表达式,能把搜索匹配到的行打印出来.grep的全称是Global Regular Expression Print(全局正则表达式)使用权限是所有用户. 一.gr ...

随机推荐

  1. Web 系统架构一般组成

    负载层技术       负载分配层,是单指利用软件实现的计算机系统上的狭义负载均衡.它是根据业务形态设计一种架构方式,将来自外部客户端的业务请求分担到每一个可用的业务节点上 . 1.用户终端不只包括类 ...

  2. asp.net web api 2 host in a windows service推荐阅读

    最简单的例子(官方)在控制台app里面运行: http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-h ...

  3. Google zxing实现二维码扫描完美解决方案

    最近因项目需求,需要在App中集成二维码扫描的功能.网上找了很多资料,最后决定使用Google的zxing来实现.实现的过程遇到了很多的坑,也是因为这些坑在网上没有具体的解决方案,今天就把我的实现过程 ...

  4. Android笔记:解决 Your project contains error(s),please fix them before running your application问题

    解决 Your project contains error(s),please fix them before running your application问题 貌似好多人都有遇到这问题,而且网 ...

  5. 设计带有placeHolder的TextView

    设计带有placeHolder的TextView 效果: 源码: PlaceholderTextView.h 与 PlaceholderTextView.m // // PlaceholderText ...

  6. sonarQube常见问题及分析

    阻断1.Close this"FileInputStream" in a "finally" clause.在finally中关闭FileInputStream ...

  7. 设置邮箱发送服务|邮箱开始SMTP服务和腾讯云解封25端口的经验总结

    原文链接: http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=7dfaaf63-d36f- ...

  8. 【原创】python web应用性能测试出现的问题以及使用的工具

    uwsgi参数设置问题 问题汇总 listen 参数设置过小导致并发上不去 解决办法 更改listen参数, 请先确认linux系统的上限(tcp_max_syn_backlog,somaxconn) ...

  9. CSS盒子模型之CSS3可伸缩框属性(Flexible Box)

    CSS盒子模型(下) 一.CSS3可伸缩框(Flexible Box) 可伸缩框属性(Flexible Box)是css3新添加的盒子模型属性,有人称之为弹性盒模型,它的出现打破了我们经常使用的浮动布 ...

  10. hdu 4803 Poor Warehouse Keeper(贪心+数学)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/26005267 题目链接:hdu 4803 P ...