定义:
官方的:
典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。
通过使用正则表达式
我的理解:
他就好比在一个驳杂的范围内,限定其中含有的几个或者一个条件,通过这个条件过滤出满足他的一组信息。
这个过滤的条件就是正则表达式
打个比方,我在整个世界中要求找出能飞的,你会说麻雀和飞机、热气球,我在提出一个要求是有生命的,你会说麻雀
我提出的所有要求就是正则表达式的条件。
讲解
我们先了解一个下grep命令来更好的使用正则表达式
一:grep的简介:
文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行。配合正则表达式的使用可以实现强大的文本处理。下面一一说明正则的例子。
二:文本处理工具分类
常用的有:grep,egrep,fgrep。
区别:
grep:在没有参数的情况下,只输出符合RE(Regular Expression)字符
egrep:等同于grep -E,和grep最大的区别就是表现在转义符上比如grep 做次数匹配时{n,m}egrep则不需要直接{n,m}。egrep方便,简介。
fgrep:等同于grep -f,但是不能使用正则表达式。所有的字符匹配功能均已消失。
三:grep参数说明:
格式:grep [OPTIONS] PATTERN(模式) [FILE...]
常用选项
--color=auto:显示颜色的参数。
-n:输出行号。
-v:反向匹配,显示不能被模式所匹配到的行。比如指定root,匹配的就不是root。
下面配合grep进行正则表达式的使用
命令1
^ 行首
[root@bogon test]# cat passwd
root:x:0:0:root:/root:/bin/bash
samba1:x:1003:1003::/root/samba1:/sbin/nologin
bubble:x:1004:1004::/home/bubble:/bin/bash
[root@bogon test]# grep '^root' passwd
root:x:0:0:root:/root:/bin/bash
我们在添加^号后目的是提出
命令2
$ 行尾
查找文本中末尾是root的
grep '$root' passwd
命令3
[] 字符组内的任一字符
[root@bogon test]# grep '[s][a]' passwd
samba1:x:1003:1003::/root/samba1:/sbin/nologin
[root@bogon test]# grep '[a-s][a]' passwd
root:x:0:0:root:/root:/bin/bash
samba1:x:1003:1003::/root/samba1:/sbin/nologin
bubble:x:1004:1004::/home/bubble:/bin/bash
我们可以在里面写范围性的如[a-s]
[a-z] 小写字母
[A-Z] 大写字母
[a-Z] 小写和大写字母
[0-9] 数字
但是他只能代表一位,如果我在一条命令中写入[a][b]说明前两位规定了a和b后面没有做详细设置
命令4
() 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
grep ‘roo(t|c)’ passwd
可以理解为 grep ‘root’ passwd和grep’rooc’ passwd同时输入打印在一个显示里
以上是常用字符,如果还想深入学习可以查看
http://www.runoob.com/regexp/regexp-syntax.html