Chinaunix首页 | 论坛 | 博客
  • 博客访问: 819728
  • 博文数量: 97
  • 博客积分: 3042
  • 博客等级: 中校
  • 技术积分: 1610
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 11:48
文章存档

2015年(1)

2014年(3)

2013年(4)

2012年(43)

2011年(44)

2010年(2)

分类: LINUX

2011-11-13 19:14:58

正则表达式是一种表示方式,可以让你查找匹配特定的准则的文本,例如以字母a开头的文件,学好正则表达式将使以后的文本处理变得方便,快速。
这里先介绍一个最简单的字符串选取功能的工具grep,介绍完grep的基本功能之后,再来介绍正则表达式的特殊字符的处理能力。还是先看看grep的基本语法:
[kouyang@kouyang kouyang]# grep [-ainvc]  '搜索字符串'  filename

参数说明:
-a :在二进制文件中以文本文件的方式搜索数据
-c  :计算找到指定字符串的次数
-i   :忽略大小写
-v : 反向选择
-n ;输出行号

[kouyang@kouyang kouyang]# grep 'root' /var/log/secure
在/var/log/secure文件中江含有root的那一行显示出来

[kouyang@kouyang kouyang]# last | grep  root
若该行有root将其显示到屏幕上
其他的参数可以逐个练习使用。

下面看看简单的正则表达式的匹配范例,通过这些范例,相信可以比较熟练的掌握基本的正则表达式的使用:
HelloWorld   匹配任意一行任何位置上的10个字母:HelloWorld
^HelloWorld  匹配出现在行首的10个字母:HelloWorld
HelloWorld$  匹配出现在行尾的10个字母:HelloWorld
^HelloWorld$  匹配只包括这10个字母:HelloWorld的一行
[Hh]elloWorld  匹配HelloWorld或者helloworld
Hello.World   匹配含有Hello这5个字母,再加上任何一个字符,再加上world
Hello*World  匹配含有Hello这5个字母,再加上任意个字母,再加上world

在上面的例子中利用“.”或者“*”,可以匹配0个或者多个字符,但是如果要匹配的字符是一个范围,这时候就要用到“{}”,因为shell中的 "{"和"}"有特殊含义,所以需要使用转移字符“\”,例如:
[kouyang@kouyang  kouyang] #  grep -n 'o\{2\}'  hello.txt
在hello.txt文件中找出出现两个连续的"o"的那一行

[kouyang@kouyang kouyang]# grep  -n 'go\{2, 5\}g' hello.txt
在hello.txt文件中找到go后面出现2~5个"o"后面再紧接着一个"g"的单词的那一行
阅读(4240) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~