grep的作用:文本搜索工具,根据用户指定的“模式”对目标文件逐行进行匹配检查:打印匹配到的行。

  模式:正则表达式编写的过滤条件。

  正则表达式(REGEXP):由一类特殊字符及文本字符所编写的模式,其中有一些字符不表示字符字面意义,而表示控制或通配的功能。

    分成两类:

      基本正则表达式:BRE

      扩展正则表达式:ERE(grep -E,egrep)    

    grep的使用:

      grep [选项]  模式 [文件...]

        主要选项:

          --color=auto: 对匹配到的文本着色显;

          -v:显示不被”模式“匹配的行;                   

          -i:忽略字符大小写;

          -o:仅显示匹配到的字符串;

          -q: 静默模式,不输出任何信息;

          -A #:显示匹配行与后#行;

          -B #:显示匹配行与前#行;

          -C #:显示匹配行与前后各#行;

          -E:使用ERE(相当于,egrep);

          -n:显示匹配行及行号;

          -c:仅显示模式匹配到的次数;

          -l:匹配多个文件,仅显示包含匹配字符的文件名;

          -L:匹配多个文件,仅显示不包含匹配字符的文件名;

基本正则表达式元字符:

  字符匹配:

    .:      匹配任意单个字符;

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

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

    [:alnum:]:  代表英文大小写字符及数字,及a-z,A-Z,1-9

    [:alpha:]:   代表英文大小写字符,及a-z,A-Z

    [:cntrl:]:     代表控制按键,CR、LF、Tab、Del等

    [:digit:]:     代表数字,1-9

    [:graph:]:   除了空格键与Tab键以外的所有按键

    [:lower:]:    代表小写字母,a-z

    [:print:]:     代表任何可以被打印出来的字符

    [:punct:]:    代表标点符号,即"'?!;:#$

    [:space:]:   任何会产生空白的字符,包括空格键[Tab]CR等

    [:upper:]:    代表大写字母,A-Z

    [:xdigit:]:     代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符

      注:以上[:***:]需要双中括号使用,即: [[:***:]]

    \w:  单个单词字符(字母、数字与_) 相当于[[:alnum:]_]

    \W:  单个非单词字符

  匹配次数:

    *:匹配前面的字符0次或多次;

    .:匹配任意单个字符;

    .*:即匹配任意字符0次或多次;

    \?:匹配前面的字符0次或1次;

    \+:匹配前面的字符1次或多次;

    \{m\}:匹配前面的字符m次;

    \{m,n\}: 匹配前面的字符至少m次,至多n次;

    \{0,n}:匹配前面的字符至多n次;

    \{m,\}:匹配前面的字符至少m次;

  位置锚定:

    ^:行首锚定,用于模式最左侧;

    $:行尾锚定,用于模式最右侧;

    \< 或 \b:词首锚定,用于单词模式的左侧;

    \> 或 \b:词尾锚定,用于单词模式的右侧

  分组及后向引用:

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

    后向引用:应用前面的分组括号中模式所匹配的字符(而非模式本身),\1,\2....\n

      例如:\(abc*\(def\)ghe\?\)

         \1:abc*\(def\)ghe\?  对应第一个左括号所在括号中的内容

         \2:def        对应第二个左括号所在括号中的内容

  扩展正则表达式元字符:

      同上正则表达式:区别在于特殊符号不需要使用“\”进行转义。?等于\?,()等于\(\),{m}等于\{m\},+等于\+。  注:\<,\>,\b仍然需要加“\”

      n|m:|匹配左边或右边的所有内容

      例如:

          abc|def 匹配abc或def,默认匹配左右边所有字符,可用()进行分组,如下

          ab(c|de)f  匹配c|de

    

grep与正则表达式的更多相关文章

  1. Linux grep与正则表达式

    grep命令         格式:grep [-acinv] [--color=auto] '查找字符串' filename -a 将binary文件以text文件的 -c 计算找到 ‘查找字符串’ ...

  2. grep和正则表达式

    正则表达式示例表字 符 意 义 示 例* 任意长度的字符串. a* 表示: 空字符串.aaaa.a…? 长度为0或者1的字符串. a? 表示: 空字符串和a.+ 长度为一个或者多个的字符串. a+表示 ...

  3. grep与正则表达式,grep、egrep和fgrep

    grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...

  4. 第5天(半天)【shell编程初步、grep及正则表达式】

    第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...

  5. [Linux 006]——grep和正则表达式

    在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...

  6. grep与正则表达式使用

    grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...

  7. grep用法详解:grep与正则表达式【转】

    转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...

  8. linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)

    本节学习的命令:grep 本节学习的技能: grep对文本的匹配 正则表达式的使用 知识点十:grep及正则表达式(4_4) grep,egrep,fgrep: grep: 根据模式搜索文本,并将符合 ...

  9. grep使用正则表达式搜索IP地址

    递归搜索当前目录及其子目录.子目录的子目录……所包含文件是否包含IP地址 grep -r "[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit: ...

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

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

随机推荐

  1. eclipse中代码格式化组合键失效了

    因为最近在整理java笔记,发现代码格式化的组合键失效了,但其他的组合键是好着的,设置里面找了也是对着的. 最后是在输入法的设置里面发现了它,原来是快捷键冲突了.取消输入法里面 的快捷键就好了,或者改 ...

  2. iOS开发之Segue

    Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue). 每一个Segue对象,都有3个属性: (1)唯一标识 @property (nonat ...

  3. line-height属性总结

     line-height属性的继承性: 子元素不设置line-height时, 在父元上设置带单位的值和百分比时会先计算父元素的line-height大小然后继承过来,在父元素上设置无单位的数值时,子 ...

  4. python 之栈的实现

    #!/usr/bin/env python # --------------------------------------- # author : Geng Jie # email : gengji ...

  5. 浅谈C10K问题

    在大型的APP中进行高并发的访问,淘宝,支付宝,微信,QQ,等 C10K问题:高并发的进行访问 C10K问题的最大特点是:设计不够良好的程序,其性能和连接数及机器性能的关系往往 是非线性的.举个例子: ...

  6. 读书笔记 effective c++ Item 43 了解如何访问模板化基类中的名字

    1. 问题的引入——派生类不会发现模板基类中的名字 假设我们需要写一个应用,使用它可以为不同的公司发送消息.消息可以以加密或者明文(未加密)的方式被发送.如果在编译阶段我们有足够的信息来确定哪个信息会 ...

  7. 4.Java集合总结系列:Map接口及其实现

    一.Map接口 Map集合的特点是:通过key值找到对应的value值,key值是唯一的,value可以重复.Map中的元素是无序的,但是也有实现了排序的Map实现类,如:TreeMap. 上面Map ...

  8. php 1到100累加 新方法

    <?php $sum = 0; for($i=0;$i<=100;$i++){ $sum += $i; } echo $sum; 之前只是这么写. 现在发现可以这么写 $sum = arr ...

  9. 用swap函数交换两个整数

    #include<stdio.h> //头文件 main() //主函数 { void swap(int *p,int *q); //声明 int a,b; //定义两个整数 int *p ...

  10. CTR预估中的贝叶斯平滑方法(二)参数估计和代码实现

    1. 前言 前面博客介绍了CTR预估中的贝叶斯平滑方法的原理http://www.cnblogs.com/bentuwuying/p/6389222.html. 这篇博客主要是介绍如何对贝叶斯平滑的参 ...