grep、正则表达式

grep、正则表达式

  • grep:文本过滤(模式:pattern)工具
    作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。
    模式:由正则表达式字符及文本字符所编写的过滤条件。
  • 正则表达式:由一类特殊字符及文本所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能。
    正则表达式分为两类:基本正则表达式、扩展正则表达式
  • grep工具支持基本正则表达式,egrep支持扩展正则表达式,fgrep快速搜索,不支持正则。

grep

  • grep [OPTIONS] PATTERN [FILE…]
    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]
    –color==auto 高亮显示匹配到的字符串
    -o 仅显示匹配到的字符串
    -v 取反、显示不能被pattern匹配到的行
    -i 忽略字符的大小写
    -n 显示行号
    -c 显示统计到的行数,等同于wc -l
    -q 静默输出 只关心命令的执行结果 不关心输出结果
    -e 指定多个条件,条件是或的关系
    -w 匹配整个单词
    -A 后几行
    -B 前几行
    -C 前后几行 查看日志 搜索关键字排查错误的时候
    -E === egrep 支持扩展的正则表达式
    -F === fgrep 不支持正则表达式

基本正则表达式

  • 字符匹配
    . :匹配任意单个字符
    [] :匹配指定范围内的任意单个字符
    [^] :匹配指定范围外的任意单个字符
    以上[]中的范围有以下几种表示方法:

    • [:alnum:] 所有的数字和字符
      [:alpha:] 所有的字母(不区分大小写)
      [:lower:] 小写字母
      [:upper:] 大写字母
      [:space:] 专门匹配空格
      [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
      [:digit:] 十进制数字 ;[:xdigit:]十六进制数字
      [:graph:] 可打印的非空白字符
      [:print:] 可打印字符
      [:punct:] 标点符号
  • 次数匹配
    用于在要指定次数的字符后面,用于前面的字符要出现的次数:

    *:匹配前面的字符任意次,0 到无穷次
    注:默认情况下,正则表达式是工作在贪婪模式下,能匹配多少就匹配多少
    .* 任意字符出现任意次 
    a* a字符出现任意次 
    \? 匹配前面的字符出现0次或者1次 
    \+ 匹配前面的字符至少1次 
    \{n\} 前面的字符出现n次 
    \{m,n\}匹配前面的字符出现m到n次,m,n是一个范围 
    \{,n\}匹配前面的字符最多出现n 
    \{m,\}匹配前的字符至少出现m次
    \ 转义符

  • 位置锚定 
    ^ 锚定行首,用于模式的最左侧
    $ 锚定行尾,用于模式的最右侧

    ^$ 匹配空行的
    ^[[:space:]] 行首是空白的字符
    ^[[:space:]]*$ 也是 空行
    ^a 以a开头的行
    b$ 以b结束的行
    ^a.*b$ 以a开头 中间任意字符 以b结尾的行
    ^a.*[[:space:]]\{3\}.*b$ a开头跟任意字符,中间出现三次空格再跟任意字符 以b结尾的行
    ^# 以#开头的行

    \b \b 匹配词首和词尾 ;\bPATTERN\b
    \< > 匹配词首和词尾 ;\<PATTERN\>

  • 分组 \(\)
    将一个或多个字符捆绑在一起,当做一个整体进行处理,符号:()
    (xy)*ab 表示xy这个整体可以出现任意次`
    注:1、分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式:\1,\2,\3, …
    2、后向引用:引用前面的分组括号中的模式所匹配的字符,而非模式本身

  • 或者 \|
    a \| b
    C \| cat

扩展正则表达式

  • grep -E ‘PATTERN’ FILE…
    egrep ‘PATTERN’ FILE…

  • 字符匹配
    . :匹配任意单个字符
    [] :匹配指定范围内的任意单个字符
    [^] :匹配指定范围外的任意单个字符
    以上[]中的范围有以下几种表示方法:

    • [:alnum:] 所有的数字和字符
      [:alpha:] 所有的字母(不区分大小写)
      [:lower:] 小写字母
      [:upper:] 大写字母
      [:space:] 专门匹配空格
      [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
      [:digit:] 十进制数字 ;[:xdigit:]十六进制数字
      [:graph:] 可打印的非空白字符
      [:print:] 可打印字符
      [:punct:] 标点符号
  • 次数匹配
    用于在要指定次数的字符后面,用于前面的字符要出现的次数:

    *:匹配前面的字符任意次,0 到无穷次
    注:默认情况下,正则表达式是工作在贪婪模式下,能匹配多少就匹配多少
    .* 任意字符出现任意次 
    ? 匹配前面的字符出现0次或者1次 
    + 匹配前面的字符至少1次 
    {n} 前面的字符出现n次 
    {m,n}匹配前面的字符出现m到n次,m,n是一个范围 
    {,n}匹配前面的字符最多出现n 
    {m,}匹配前的字符至少出现m次

  • 位置锚定 
    ^ 锚定行首,用于模式的最左侧
    $ 锚定行尾,用于模式的最右侧

    ^$ 匹配空行的
    ^[[:space:]] 行首是空白的字符
    ^[[:space:]]*$ 也是 空行
    ^a 以a开头的行
    b$ 以b结束的行
    ^a.*b$ 以a开头 中间任意字符 以b结尾的行
    ^a.*[[:space:]]\{3\}.*b$ a开头跟任意字符,中间出现三次空格再跟任意字符 以b结尾的行
    ^# 以#开头的行

    \b \b 匹配词首和词尾 ;\bPATTERN\b
    \< > 匹配词首和词尾 ;\<PATTERN\>

  • 分组 ()
    将一个或多个字符捆绑在一起,当做一个整体进行处理,符号:()
    (xy)*ab 表示xy这个整体可以出现任意次

  • 或者 |
    a | b
    C | cat

原创文章,作者:s,如若转载,请注明出处:http://www.178linux.com/72661

(0)
上一篇 2017-04-06 19:20
下一篇 2017-04-06 20:12

相关推荐

  • LVM逻辑卷管理器

    Logical Volume Manager     LVM(逻辑卷管理)是Linux环境下对磁盘分区进行管理的一种机制。     普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,     某个分区空间耗尽时,解决的方法通常是使…

    Linux干货 2016-08-29
  • 软件包管理–rpm、yum

    rpm软件包管理,rpm命令的使用。yum命令使用,yum源的搭建,网络yum源的搭建方法。编译安装http

    Linux干货 2017-12-03
  • grep,find

    显示当前系统上root、fedora、user用户的默认shell: 2.找出/etc/rc.d/init.d/functions文中单词后跟一组小括号的行 3.使用echo命令输出一个绝对路径,使用grep取出其基名: 4.找出ifconfig命令结果中的1-255之间的数字 5.写一个模式,匹配合理的ip地址 6.写一个模式,匹配出邮箱地址 7.查找/v…

    Linux干货 2016-11-27
  • Shell编程 详解特殊变量之位置参数

    今天我们来探讨shell编程的特殊变量:位置变量。 首先我创建了一个testargs.sh的小脚本: #!/usr/bin/env bash # # Author: jacky18676887374@aliyun.com # date: 20160813-19:30:59 # Vervion:&nb…

    Linux干货 2016-08-15
  • shell脚本编程2

    shell脚本编程2   今天继续学习了shell脚本编程,续之前写的脚本编程1。上次主要学了编程的基础,脚本格式,变量类型及变量的使用,条件测试,数字运算并且进行了部分练习,因为这部分逻辑思维能力要求不是很高,因此记忆起来难度不是特别大。   从今天开始便进入了流程控制以及函数、数组、高级字符串操作、高级变量等内容的学习,总体来说难度和…

    Linux干货 2016-08-16
  • 磁盘管理

    设备文件 I/O Ports: I/O 设备地址 一切皆文件: open(), read(), write(), close() 设备类型: 块设备:block ,存取单位“块”,磁盘 [root@localhost ~]# ll /dev/ brw-rw—-. 1 root disk 253, 0 Apr 29 03:53 dm-0 块设备 brw-r…

    2017-04-28