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. 0ctf2018 pwn

    前言 对 0ctf2018 的 pwn 做一个总结 正文 babystack 漏洞 非常直接的 栈溢出 ssize_t sub_804843B() { char buf; // [esp+0h] [e ...

  2. 禅道Bug管理工具环境搭建

    下载地址:http://sourceforge.net/projects/zentao/files/8.2/ZenTaoPMS.8.2.stable.exe/download 1.解压ZenTaoPM ...

  3. centos 安装golang笔记

    1.使用yum安装 yum install go 这个命令可以将go环境安装到linux上. 2.配置gopath 第一步安装成功的go命令会被放入/usr/lib/golang/bin /usr/l ...

  4. Mysql 事务日志(Ib_logfile)

    mysql的innodb中事务日志ib_logfile(0/1) 概念:事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,可以手工修改参数,调节开启 ...

  5. node-sass 解决 no such file or directory

    在使用node-sass编译的时候出现以下情况 Error: ENOENT: no such file or directory, scandir 'D:\xxxx\node_modules\.npm ...

  6. Entity Framework的几种初始化器

    Database.SetInitializer<TContext>(new NullDatabaseInitializer<TContext>()); Database.Set ...

  7. django中的权限控制(form增删改)

    Django默认提供了权限控制,但只能对使用了其自带的登录认证的用户进行权限控制,说白了就是只能对存储在auth_user表中的用户进行权限控制,但不能对未登录过的用户进行权限控制.但如果通过集成LD ...

  8. PowerShell管理SCOM_批量设置维护模式(下)

    #定义存储需要置为维护模式的计算机名称列表$serverlist = "C:\scomm\servers.txt"#定义RMS服务器名称$rmsServerName=”scomw. ...

  9. Celery学习--- Celery 最佳实践之与django结合实现异步任务

    django 可以轻松跟celery结合实现异步任务,只需简单配置即可 同步执行和异步执行 注意:即使Celery的任务没有执行完成,但是已经创建了任务ID.可以利用前台的定时任务发送Ajax异步请求 ...

  10. win8中 cmd直接以管理员权限运行

    一.组合键 WIN+X   二.锁定到任务栏,方便以后快速启动     三.控制面板->控制中心     四.更改用户账户控制设置--调到最低 好了,点击任务栏的命令提示符