正则表达式示例表
字 符 意 义 示 例
* 任意长度的字符串。 a* 表示: 空字符串、aaaa、a…
? 长度为0或者1的字符串。 a? 表示: 空字符串和a。
+ 长度为一个或者多个的字符串。 a+表示:a、aa、aaaaaa…
. 任意字符。 a. 表示:a后跟任意字符。
{} 代表上一规则重复数目、
{1,1,s}包含一组匹配花括号,里面有两个数字和一个字符,表示在指定次数范围内找到字符。 a{3}表示:三个a、
a{1,3}表示:一个到三个a、
a{3,} 表示:大于等于三个a、
{3,7,a}表示在3到7次重复范围内匹配字符a。
[] 集合,代表方括号中任意一个字符。 [ab] 表示:a或者b都可以、
[a-z] 表示:从a到z的字符。
() 组,代表一组字符。 (ab){2}表示:abab。
a/b 同时满足。 a/b表示:字符串a后跟字符串b才能满足要求。
a|b 并列,代表符合a或者符合b都可以 a|b表示: 字符串a或者字符串b都满足要求。
^ 如果放在开头表示代表该规则必须在字符串的开头,其他位置代表字符本身。
如果放在[]中的开头表示对该集合取反,其他位置代表字符本身。 ^a表示:a必须在字符串的开头、
[^a]表示:除了a以外的其他字符。
$ 如果放在最后表示该规则必须放在最后,其他位置代表字符本身。 a$表示:a必须在字符串最后。
\:s 正则表达式用 \:s 表示空格。 a\:sb 匹配 a b。
\:a 正则表达式用 \:a 表示字符与数字。 a\:a 匹配 ab、a6 等。
\:c 正则表达式用 \:c 仅表示字符。 a\:c 匹配 ac等,不匹配a1等。
\:p 正则表达式用 \:p 表示可打印字符。
\:D 正则表达式用 \:d 仅表示数字。 a\:c 匹配 a1等,不匹配ac等。
\:x00 正则表达式用 \:x00 表示ASCII字符。
\:r 正则表达式用 \:r 表示回车。
\:N 正则表达式用 \:d 表示换行。

一 正则表达式
基本元字符集及其含义
    ^     只只匹配行首
    $     只只匹配行尾
    *     只一个单字符后紧跟*,匹配0个或多个此单字符
    [ ]   只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用-
            表示[ ]内字符序列范围,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ]
    \     只用来屏蔽一个元字符的特殊含义。因为有时在shell中一些元字符有
           特殊含义。\可以使其失去应有意义
    .     只匹配任意单字符
pattern\      只用来匹配前面pattern出现次数。n为次数
pattern\m    只含义同上,但次数最少为n
pattern\    只含义同上,但pattern出现次数在n与m之间

二 grep 的用法
1 双引号引用
   在grep命令中输入字符串参数时,最好将其用双引号括起来
2 grep选项
   常用的grep选项有:
   -c 只输出匹配行的计数。
   -i 不区分大小写(只适用于单字符)。
   -h 查询多文件时不显示文件名。
   -l 查询多文件时只输出包含匹配字符的文件名。
   -n 显示匹配行及行号。
   -s 不显示不存在或无匹配文本的错误信息。
   -v 显示不包含匹配文本的所有行。

 -o Print each match, but only the match, not the entire line.

3 精确匹配
    使用grep抽取精确匹配的一种更有效方式是在抽取字符串后加\>。假定现在精确抽取48,则为"48\>"
三 grep和正则表达式
     使用正则表达式时最好用单引号括起来,这样可以防止grep中使用的专有模式与一些shell命令的特殊方式相混淆。
1 模式范围
    假定要抽取代码为484和483的城市位置,上一章中讲到可以使用[ ]来指定字符串范围,这里用48开始,
    以3或4结尾,这样抽出484或483。grep '48[34]' data.f
2 不匹配行首
     如果要抽出记录,使其行首不是48,可以在方括号中使用^记号,表明查询在行首开始。
     grep '^[^48]' data.f
3 匹配任意字符
   如果抽取以L开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
    grep 'L...D' data.f
4 日期查询
    一个常用的查询模式是日期查询。先查询所有以5开始以1 9 9 6或1 9 9 8结尾的所有记录。使用模式5..199[6,8].这意味着第一个字符为 5,后跟两个点,接着是199,剩余两个数字是6或8。
     grep '5..199[6,8]' data.f
    查询包含1998的所有记录的另外一种方法是使用表达式[0-9]\[8],含义是任意数字重复3次,后跟数字8,虽然这个方法不像上一个方 法那么精确,但也有一定作用。
5 使用grep匹配“与”或者“或”模式
    grep命令加- E参数,这一扩展允许使用扩展模式匹配。例如,要抽取城市代码为2 1 9或2 1 6,方法如下:
    grep -E '219|216' data.f
6 空行
   结合使用^和$可查询空行。使用- n参数显示实际行数:
    grep '^$' data.f
7 grep 与类名的使用
   类等价的正则表达式类等价的正则表达式
[[:upper:]]   [A-Z]               [[:alnum:]] [0-9a-zA-Z]
[[:lower:]]   [a-z]               [[:space:]] 空格或t a b键
[[:digit:]]   [0-9]                [[:alpha:]] [a-zA-Z]

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

  1. Linux grep与正则表达式

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

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

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

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

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

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

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

  5. grep与正则表达式使用

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

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

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

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

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

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

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

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

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

随机推荐

  1. python二进制文件解析

    struct.pack(): struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这里的字符串理解为字节流,或字节数组).其函数原型 ...

  2. 在C#中使用属性控件添加属性窗口

    转自原文 在C#中使用属性控件添加属性窗口 第一步,创建在应用程序中将要展现的字段属性为public公有属性.其中,所有的属性必须有get和set的方法(如果不设置get方法,则要显示的属性不会显示在 ...

  3. iOS页面间传值的方式 (Delegate/NSNotification/Block/NSUserDefault/单例)

    iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)   iOS页面间传值的方式(NSUserDefault/Delegate/NSN ...

  4. 构建高可用web站点(四)

    首先我们来了解负载均衡的概念:英文名称为Load Balance,其意思就是将负载(工作任务)进行平衡.分摊到多个操作单元上进行执行,例如Web服务器.FTP服务器.企业关键应用服务器和其它关键任务服 ...

  5. Installshield更新时,新加dll未拷贝至安装目录问题完美解决【原创】

    最近在发现在开发过程中新增的目录或文件(特别是dll\ocx\exe等二进制文件),在升级安装时拷贝失败. 经过一周的研究,完美解决办法: 对于新增的文件或目录,放到一个新的component中,并且 ...

  6. PKUSC2016滚粗记

    Day0 坐飞机来北京,地铁上接到电话,以为是诈骗电话马上就挂了,然后看了一下是北京的电话,赶脚有点不对...打回去居然是报到处老师的电话..走了几个小时,到勺园和其他学校的神犇合住.TAT,感觉第二 ...

  7. Linux下Apache PHP MYSQL 默认安装路径

    apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下apache配置文件:/etc/httpd/conf/httpd.confApache模块路径:/usr/sbin/apa ...

  8. 【Java解惑】表达式问题

    1. 如果判断一个参数是否是奇数? 我们通过下面代码来尝试一下,看看方法可行不: public static boolean isOdd(int i) { return i % 2 == 1; } p ...

  9. topcoder13185 TreePuzzle

    https://community.topcoder.com/stat?c=problem_statement&pm=13185 被wck屠了. 考试时候想分类讨论,结果发现情况有点复杂,最后 ...

  10. HDOJ(HDU) 1898 Sempr == The Best Problem Solver?(水题、、、)

    Problem Description As is known to all, Sempr(Liangjing Wang) had solved more than 1400 problems on ...