Chinaunix首页 | 论坛 | 博客
  • 博客访问: 516674
  • 博文数量: 93
  • 博客积分: 2479
  • 博客等级: 大尉
  • 技术积分: 1008
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 11:59
文章分类

全部博文(93)

文章存档

2012年(2)

2011年(41)

2010年(24)

2009年(21)

2008年(5)

分类:

2009-04-04 00:08:14

正则表达式及grep 命令初解析

1.正则表达式:

什么是正则表达式?

一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。

另外,可以解释为:一些特殊或不很特殊的字符串模式的集合。

二者意义相同。其主要作用就是:字符匹配和替换。

正则表达式由特殊字符以及普通字符组成,特殊字符是正则表达式规则定义的有特殊含义的字符,普通字符是除特殊字符外的所有打印和非打印字符。

 

2.正则表达式主要应用在GREPSED命令中,其次结合{\\}使用在awk语言中。

 

 

3. 基本元字符集及其含义:

 ^----------------只匹配行首;

 $----------------只匹配行尾;

 *-----------------一个单字符后紧跟*,匹配0个或多个此单字符;

 []----------------匹配[]内字符,可以是一个字符,也可是字符序列。可以使用[]字符序列范围,如用[1-5]代替[12345]

 \----------------用来屏蔽一个元字符的特殊含义。因为有时在shell中一些元字符有特殊含义。\可以使其失去应有意义。(其实就是转义字符或者叫脱义字符)

.-----------------匹配任意单个字符

a\{n\}-----------匹配前面a出现的次数,n为次数;

a\{n,\}m-------匹配前面a出现次数,但次数最少为n(>=n个字符a)

a\{n,m\}-------匹配前面字符a出现的次数,次数>=n && 次数<=m

 

 

^$--------------空行

^.$-------------一个字符的行。

 

7-2 经常使用的正则表达式举例

^ 行首

$ 行尾

^ [ t h e ]                            t h e开头行

[ S s ] i g n a [ l L ]             匹配单词s i g n a ls i g n a L

S i g n a lS i g n a L

[Ss]igna[lL]\.                             同上,但加一句点

[ m a y M A Y ]                   包含m a y大写或小写字母的行

^ U S E R $                        只包含U S E R的行

[tty]$                                 t t y结尾的行

\ .                               带句点的行

^ d . . x . . x . . x          用户、用户组及其他用户组成员有可执行权限的目录

^ [ ^ l ]                       排除关联目录的目录列表

[ . * 0 ]                       0之前或之后加任意字符

[ 0 0 0 * ]                    0 0 0或更多个

[ iI]                             大写或小写I

[ i I ] [ n N ]                大写或小写in

[ ^ $ ]                         空行

[ ^ . * $ ]                     匹配行中任意字符串

^ . . . . . . $                  包括6个字符的行

[a- zA-Z]                     任意单字符

[ a - z ] [ a - z ] *         至少一个小写字母

[ ^ 0 - 9 \ $ ]                非数字或美元标识

[ ^ 0 - 0 A - Z a - z ]     非数字或字母

[ 1 2 3 ]                       13中一个数字

[ D d ] e v i c e            单词d e v i c eD e v i c e

D e . . c e                    前两个字母为D e,后跟两个任意字符,最后为c e

 

Grep家族

Grep(全局正则表达式) 允许对文本文件进行模式查找,如果找到匹配模式,打印包含所有匹配模式的行。它支持基本正则表达式也支持扩展集。Grep有三种变形:

 

Grep    标准的Grep命令。重点所在;

Egrep   扩展的Grep支持基本及扩展的正则表达式,但不支持\ q模式范围的应用,与之相对应的一些更加规范的模式

Fgrep   快速的Grep允许查找字符串而不是一个模式。不要误解单词f a s t,实际上它与g r e p速度相当。

2.常用的g r e p选项有:

-c 只输出匹配行的计数。

-i 不区分大小写(只适用于单字符)。

-h 查询多文件时不显示文件名。

-l 查询多文件时只输出包含匹配字符的文件名。

-n 显示匹配行及行号。

-s 不显示不存在或无匹配文本的错误信息。

-v 显示不包含匹配文本的所有行。

3.  g r e p命令中输入字符串参数时,最好将其用双引号括起来。这样做有两个原因,一是以防被误解为s h e l l命令,二是可以用来查找多个单词组成的字符串,在调用变量时,也应该使用双引号,诸如: g r e p$ M Y VA R”文件名,如果不这样,将

没有返回结果。

在调用模式匹配时,应使用单引号。

 

************************************************************************

               

注:属个人学习整理,如有错误,有各位朋友帮忙指出,不胜感激,一同进步!!!
阅读(917) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~