正则表达式种类
普通正则表达式,定了一些基础的符号及其含义
扩展正则表达式,除了基础的符号,又扩展了更多的符号 + ?
示例文本文件/tmp/jsetc
jsetc1 28 hangzhou
jsetc2 30 shenzhen
jsetc3 32 shanghai
zhangsan1 33 hangzhou
zhangsan2 34 foreign
zhangsan3 18 beijing
jsetc.test
shijange888
jsetcjsetc
ABCZ
whoiAm
<body><replaceHost>0</replaceHost><replacePort>0</replacePort><seq>1340517858</seq></body>
grep注意事项
grep默认只支持普通正则,如果使用扩展正则,则需要使用egrep 或 grep -E
扩展正则
? 前面字符出现0或者1次
+ 前面字符出现1或者多次
cat /tmp/jsetc |egrep 'jsetc1?'
cat /tmp/jsetc |egrep 'jsetc1+'
{n} 前面字符匹配n次
{a,b} 前面字符匹配a到b次
{,b} 前面字符匹配0次到b次
{a,} 前面字符匹配a或a+次
cat /tmp/jsetc |egrep 'jsetc1{4}'
cat /tmp/jsetc |egrep 'jsetc1{1,4}'
cat /tmp/jsetc |egrep 'jsetc1{4,}'
(jsetc)分组匹配
cat /tmp/jsetc |egrep '(jsetc){2}'
分组匹配反向引用\1 \2
cat /tmp/jsetc | egrep '<replacePort>.*</replacePort>'
cat /tmp/jsetc | egrep '<seq>.*</seq>'
cat /tmp/jsetc | egrep '<(replacePort)>.*</\1>'
cat /tmp/jsetc | egrep '<(replaceHost)>.*</\1>' #\1反向引用
cat /tmp/jsetc |egrep '<(seq)>(.*)</\1>\2'