1.什么是正则表达式?
要想管理好主机,任何一名有经验的系统管理员都会告诉你,“正则表达式很重要”。为什么重要呢?因为在日常的管理主机的过程中,
主要的就是处理文本字符,而正则表达式恰恰是处理文本所离不开的工具。
总之,正则表达式就是处理字符串的方法,以行为单位进行字符串的处理,通过一些特殊符号的辅助,可以让用户轻松的处理文本。
对于一般用户而言,使用正则表达式的机会不多,不过,要想成为一名系统管理员,正则表达式则是不可不学的。原因是,在于,系统每天产生的的信息会多到你无法想像。
由于系统的数据量太大,要系统管理员每天去看这么多信息,真的很不现实,从千百行中找出有问题的行进行处理,才是明智的做法,这个时候,就不得不用到正则表达式了。如此一来,管理员的工作将会很轻松了,当然正则表达式的用处还不至于此,深入了解后,你会爱上它的。
正则表达式分为两种,一种是基础的正则表达式,一种是扩展的正则表达式。
下面我们就介绍这两种正则表达式。
一:基础的正则表达式。
正则表达式是处理字符串的标准方式,它需要有支持的工具程序来辅助,所以,这里先介绍一个简单的命令grep。在介绍完后,再讲讲表达式的字符串处理能力。
先了解一下grep的语法。
grep [-acinv] '搜索字符串' filename
参数说明:
-a :在二进制文件中,以文本方式搜索数据。
-c :计算找到‘搜索字符串’的次数。
-i :忽略大小写的不同,所以大小写视为相同。
-n :输出行号。
-v :反向选择,即显示出没有 ‘搜索字符串’的那些行显示出来。
如
#grep -v 'root' /var/log/secure
将/var/log/secure下的没有root的那些行显示出来
#grep 'root' /var/log/secure
将/var/log/secure下有root的那些行显示出来
下面来结合grep讲讲正则表达式。
grep是很常用的命令,它最重要的功能就是进行字符串的比较,然后将符合用户需要的字符串打印出来。grep在数据中查找一个字符串时是以“行”为单位进行数据的选取的。只有满足条件的行才被显示出来,不满足的就不会显示出来 。
1。搜索特定字符串
如
#grep -n 'the' myfile.txt
在myfile.txt 中查找 the 单词,并显示出是第几行。
#grep -vn 'the' myfile.txt
在myfile.txt中查找 the 单词,显示出没有the 的行,并显示出是第几行
#grep -in 'the' myfile.txt
不考虑the的大小写,大写和小写都是同等的,并显示出有the的行,打印出是第几行
2.利用[ ]来搜索集合字符
如果要搜索test和taste这两个单词时,可以发现,它们有共同的部分,就是‘t?st’,这个时候,我们可以这样搜索
#grep -n 't[ae]st' myfile.txt
其实,,[ ]里论有几个字符,都只代表一个字符,所以,上面的例子说明了我们只需要tast或test 两个字符串
如果想要搜索有aa的字符,可以用下面方法
#grep -n 'aa' myfile.txt
但是如果不想aa前面有c,可以用集合字符的反向选择[^]来实现:
#grep -n '[^c]aa' myfile.txt
当然[]里面还可以连写,如abc前面只能出现小写字母。
#grep -n '[a-z]abc' myfile.txt