何谓正则表达式

正则表达式,又称正规表示法、常规表示法(Regular Expression,在代码中常简写为regex、regexp或RE),是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。
正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,不表示其字面意义,而用于额外功能性描述。
 
正则表达式分类

正则表达式根据元字符的数量及功能不同又分为基本正则表达式(grep)和拓展正则表达式(egrep)。而grep和egrep同属于文本搜索工具,可根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。用法上grep –E等同于egrep,与grep和egrep相似的文本搜索工具还有fgrep,因不支持使用正则表达式,所以不再单独介绍。
 
基本正则表达式(grep)
 
语法格式:grep[option]... 'PATTERN' FILE...
 
基本正则表达式元字符:
 
1.字符匹配:
    .:任意单个字符
    [ ]:匹配指定范围内的任意单个字符
    [0-9]:匹配单个数字
    [a-z]:匹配单个小写字母
[A-Z]:匹配单个大写字母
[[:digit:]]:匹配单个数字
[[:lower:]]:匹配单个小写字母
[[:upper:]]:匹配单个大写字母
[[:space:]]:匹配单个空白字符
[[:punct:]]:匹配单个标点符号
[[:alnum:]]:匹配单个字母或数字
[[:alpha:]]:匹配单个字母(不分大小写)
[^]:匹配范围外的任意单个字符
 
  2.次数匹配:
*:任意次(前面字符出现任意次)
\?:0次或1次(前面字符可有可无)
\{m\}: m次(前面字符出现m次)
\{m,n\}:至少m次,至多n次
\{m,\}:至少m次
\{0,n\}:至多n次
.*:任意长度的任意字符
 
  3.位置锚定:
^:行首锚定(写在模式最左侧)
$:行尾锚定(写在模式最右侧)
^$:空白行
\<,/b:词首锚定(出现于单词左侧)
\>,/b:词尾锚定(出现于单词右侧)
(注:不包含特殊字符的连续字符组成的串叫单词)
 
  4.分组
\( \):如\(ab\)*
(分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,之后可被引用)
 
  5.引用
\n:引用前面的第n个左括号以及与之对应的右括号中的模式所匹配到的内容
 
拓展正则表达式(egrep)
    语法格式:egrep [option] 'PATTERN' FILE...
 
拓展正则表达式元字符:
1.字符匹配:
 .:任意单个字符
 [ ]:匹配范围内的任意单个字符
 [^]:匹配范围外的任意单个字符
 
2.次数匹配:
*:任意次
?: 0或1次
+:至少1次
{m}: m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:至多n次
 
3.位置锚定:
^:行首锚定
$:行尾锚定
\<,\b:词首锚定
\>,\b:词尾锚定
^$,^[[:space:]]*$:空白行
 
4.分组:
( ):分组
12347|:或 
 
5.引用:
    \n:引用前面的第n个左括号以及与之对应的右括号中的模式所匹配到的内容
 
grep及egrep命令选项

-v: 反向选取
-o:仅显示匹配的字串,而非字串所在的行
-i:ignore-case,忽略字符大小写
-A:显示之后两行
-B:显示之前两行
-C:显示上下两行
 
用法

显示/proc/meminfo文件中以大写或小写S开头的行

显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户
 

显示/etc/passwd文件中其默认shell为/bin/bash的用户中ID号最大的用户
 

找出/etc/passwd文件中的一位数或两位数
 

显示/boot/grub/grub.conf中以至少一个空白字符开头的行
 

显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行
 

找出netstat -tan命令执行结果中以'LISTEN'结尾的行
 

找出当前系统上其用户名和默认shell相同的用户
 

显示当前系统上root或scholar用户的默认shell12
 

找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号“()”行
 

使用echo命令输出一个路径,而后使用grep取出其基名
 

找出ifconfig命令结果中的1-255之间的数字

grep、egrep命令用法的更多相关文章

  1. Linux grep/egrep命令详解

    grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来 grep搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2. grep的规则表达式( ...

  2. Shell命令-文件及内容处理之grep(egrep)、join

    文件及内容处理 - grep(egrep).join 1. grep(egrep):文本过滤工具 grep(egrep)命令的功能说明 grep命令是Linux系统中最重要的命令之一,其功能是从文本文 ...

  3. grep egrep fgrep命令

    一.grep.egrep.fgrep命令 本文中主要介绍了linux系统下grep egrep fgrep命令和正则表达式的基本参数和使用格式.方法.(注释:文中fg代表例子,) 1.1.基本定义: ...

  4. [转] linux 查找文本过滤grep正则表达式命令详解用法

    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用 ...

  5. ps命令用法

    转自:http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html Linux中的ps命令是Process Status的缩写.ps命令用来 ...

  6. find命令用法

    关于查找 文件查找:     locate非实时查找:根据索引查找     find实时查找:根据文件的各种属性去找到相对应文件     根据文件的各种属性去找到相对应文件 文本搜索:     gre ...

  7. Linux grep常用命令

    在一个文件中同时查找多个字符串: 并集语法: grep -e 'pattern1 -e 'pattern2 file 或集语法: 1.grep -E 'pattern1|pattern2' file ...

  8. Ubuntu kill命令用法详解

    转自:Ubuntu kill命令用法详解 1. kill   作用:根据进程号杀死进程   用法: kill [信号代码] 进程ID   root@fcola:/# ps -ef | grep sen ...

  9. 【转载】grep,egrep,fgrep详解

    [转载自]http://blog.csdn.net/homking/article/details/6000711 egrep 等价于 grep -E fgrep 等价于 grep -F grep - ...

随机推荐

  1. JavaScript正则表达式基础知识汇总

    一.创建正则对象: 1.构造函数RegExp创建正则对象 var pattern = new RegExp('s$'); //pattern匹配以s结尾的字符串 2.使用正则直接量 var patte ...

  2. xcode7 断点失效

    今天下了个别人的demo,运行发现断点不起作用,开始以为是xcode7的问题,因为自升级到xcode7后没怎么用,但后来尝试其它项目,发现是可以断点的,所以才认定不是xcode的问题,而是项目配置的问 ...

  3. Failure [INSTALL_FAILED_OLDER_SDK] [每件问题100块]

    问题描述:链接真机时候出现的问题 解决问题: minSdkVersion 10targetSdkVersion 22 修改这两个值

  4. zookeeper(六):Zookeeper客户端Curator的API使用详解

    简介 Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连.反复注册Watcher和NodeExistsEx ...

  5. HTTPS证书申请相关笔记

    申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...

  6. vivado编译出错 [Synth 8-729] [Synth 8-787]

    http://www.cnblogs.com/pejoicen   打开vivado工程后,发现右上角如下图所示: 重新编译这两个ip核后,对整个工程synthesis,工程报错 [Synth 8-7 ...

  7. 图解PCIE原理(从软件角度)

    1  PCIE基本概念 1.1   PCIE拓扑架构图 1.2 PCIE Switch内部结构图 1.3  PCIE协议结构图 2 PCIE枚举原理 2.1 Type0&Type1配置头空间 ...

  8. [gj]三国攻势图

    三国攻势图 参考: 估计你对三国故事有点兴趣,我给你看看图说三国(大概的):

  9. MVC之旅(1)

    其实很久很久之前就有接触asp.net mvc了.那些年,还是在大学校园的美好青葱时光,常常听到一些大牛开口闭口都是mvc,心痒痒的也去图书馆借了本mvc的教材,应该是mvc 2.悲催的是,我都没知道 ...

  10. USART—串口通讯

    本章中主要讲解的是串口异步通讯,异步通讯中由于没有时钟信号, 所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码 . 串口通讯的一个数据包从起始信号开始,直到停止信号结束.数据 ...