术语介绍:正则表达式是一种表示方式,可以让你查找匹配特定的准则的文本,例如以字母a开头的文件,学好正则表达式将使以后的文本处理变得方便,快速。
本文先给大家介绍字符串选取工具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"的单词的那一行。