正则表达式是一种字符模式,在匹配文本文件的内容的时候,使用一组特殊的符号,匹配出我们想要的内容。
为什么用正则表达式
正则表达式的元字符:
元字符 功能 样例 匹配样例
^ 行首定位符 /^root/ 匹配以root开头的行
$ 行尾定位符 /bash$/ 匹配以bash结尾的行
. 匹配单个字符 /l.ve/ 匹配love,live等等,在l和v中间有一个字符的
* 前导符 /lo*se/ 匹配lse,lose,loose等等
匹配0个或多个它前面的字符(字符串)
/l*/ 匹配0个l,或者l,ll,等等
/ll*/ 匹配l,ll,lll等等
[ ] 匹配一组字符中的任意一个 /l[oi]ve/ 匹配love、live
[x-y] 表示一段范围 /[a-c]ove/ 匹配aove,bove,cove
其中x和y为字母或者数字 /[0-9]2/ 匹配02,12,22,32,......,92
[^] 表示取反 /[^Tt]om/ 匹配除了Tom和tom的
\ 表示转义 /2\.0/ 匹配2.0,此时.为普通字符,不再是元字符
/love./ 匹配love.
\< 词首定位符 /\<love/ 匹配loved、lovely
\> 词尾定位符 /love\>/ 匹配inlove等等
x\{m\} x字符重复m次 /a\{5\}/ 匹配aaaaa
x\{m,\} x字符至少重复m次 /a\{5,\}/ 匹配aaaaa,aaaaaa, aaaaaaa等等
x\{m,n\} 前面的x 有 m - n 个 /\<[A-Za-z]\{5,7\}\>或 /a\{5,7\}/ 匹配aaaaa,aaaaaa,aaaaaaa
(3-5)指3个或4个或5个匹配 (m 和 n 的范围是 0-255。)
.* 任意0个或多个字符
\(....\) 标签 lovely \(love\)ly \1ly
如何去学习:
先去看例子,再转化,进行修改,变成你自己
语法格式:
命令 "正则表达式" 文本文件
grep "^root" passwd
正则表达式实战举例:
1).
[root@test2 tmp]# cat test2.txt
lovely
livl
levllaeq
lcveroop
woeijfdklkiod
love mo forerver
hahahh lilylilei
ku hou haha xixi
doqiadddoqiia
[root@test2 tmp]# grep "c.e" test2.txt
lcveroop
[root@test2 tmp]# grep "l.l" test2.txt
hahahh lilylilei
[root@test2 tmp]# grep "e.j" test2.txt
woeijfdklkiod
################################################################################################################################
2)*
[root@test2 tmp]# cat test2.txt
lovely
livl
levllaeq
lcveroop
woeijfdklkiod
love mo forerver
hahahh lilylilei
ku hou haha xixi
zxysypr
love mo forervez
[root@test2 tmp]# grep "lo*" test2.txt
lovely
livl
levllaeq
lcveroop
woeijfdklkiod
love mo forerver
hahahh lilylilei
love mo forervez
[root@test2 tmp]# grep "lo*i" test2.txt
livl
hahahh lilylilei
[root@test2 tmp]# grep "lo*o" test2.txt
lovely
love mo forerver
love mo forervez