grep命令的用法与正则表达式

1. 什么是grep

  • grep它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。
    grep命令的常用格式为:grep [选项] ”模式“ [文件]
    grep家族总共有三个:grep,egrep,fgrep。

2.常用选项

  • -v:反过来(invert),只打印没有匹配的,而匹配的反而不打印。
  • -i:忽略大小写
  • -q:不向标准输出写任何东西。如果找到任何匹配的内容就立即以状态值 0 退出,即使检测到了错误.

  • -E:将模式 PATTERN 作为一个扩展的正则表达式来解释 。

  • -R:递归地读每一目录下的所有文件。

3.正则表达式与grep的使用

  • 正则表达式的概念:
    是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过 特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。
  • 正则表达式的基本要素
    字符类
    数量限定符
    位置限定符
    特殊符号
  • 字符类:
    -“.”:表示匹配任意一个字符
    这里写图片描述
    - []:表示匹配括号内的任意一个字符
    这里写图片描述
    - “-”:表示在括号的的范围
    这里写图片描述
    -“^”:位于[ ]括号内的开头,匹配出括号中的字符以外的任意一个字符
    这里写图片描述
    -“[[:digit:]]:表示匹配任意一个数字
    这里写图片描述
    -“[[:alpha:]]”:表示匹配任意一个字母
    这里写图片描述

  • 数量限定符:
    - “?”:紧跟在它前面的单元匹配0次或一次
    - “+”:紧跟在它前面的单元匹配一次或多次
    - “*”:紧跟在它前面的但愿匹配0次或多次
    - “{N}”:紧跟在它前面的单元精确匹配N次
    - “{N,}”:紧跟在它前面的单元应匹配至少N次
    - ”{,M}”:紧跟在它前面的单元应匹配最多N次
    - “{N,M}”:紧跟在它前面的单元应至少匹配N次,至多匹配M次。
    这里写图片描述

  • 位置限定符:
    - “^”:匹配行首的位置
    -“$”:匹配行末的位置
    -“\<”:匹配单词开头的位置
    -“>”:匹配单词结尾的位置
    -“\b”:匹配单词开头或结尾的位置
    -“\B”:匹配非单词开头或结尾的位置
    这里写图片描述
  • 特殊符号:
    -“\”:转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符。
    -“()”:将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符。
    -“|”:连接两个子表达式,表示或的关系
    这里写图片描述
  • 其他字符
    • \d: [0-9] 数字字符
  • \D: [^0-9] 非数字字符
  • \w :[a-zA-Z0-9_] 数字字母下划线
  • \W :[^\w] 非数字字母下划线
    这里写图片描述
  • \s :[_\r\t\n\f] 表格,换行等空白区域
  • \S :[^\s] 非空白区域
    这里写图片描述
    看上边发现-E与-P所得的结果不同,看到下面的分类即可明白。
  • 正则表达式分类
    基本的正则表达式(grep 指令后不跟任何参数,则表示要使用 ”BREs“ )。
    扩展的正则表达式(grep 指令后跟 ”-E” 参数,则表示要使用 “EREs“ )。
    Perl的正则表达式(grep 指令后跟 “-P” 参数,则表示要使用 “PREs”)。
    这里写图片描述

练习:
1.过滤出手机号码:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/xiaodu655/article/details/80930776