先建一文件吧,就叫做aa.txt
内容如下:(本人叫周元军,就以我的名字做内容吧)
zhouzhouzhouzhouyuanjun
zhouzhouzhouyuanjun
zhouzhouyuanjun
zhouyuanjun
yuanjun
Zhouyuanjun
Yuanjun
Jun
基本元字符就那几个:*.^$[]()/。
相信没人不知道,这里重点强调下*,它用在一个单字符或者单词后面,匹配0个或多个此字
符或单词。
例子1:我们要找到以0个或多个“zhou”开头行,怎么办呢?
#grep "/(zhou/)*yuanjun" aa.txt
结果如何呢?如果把*去掉,又会有什么结果呢?这次明白*的作用了吧
例子2:要是列出一个目录里面的所有子目录,怎么办呢?
#ls -l|grep "^d"
要是列出所有用户均可执行的文件怎么办呢?
#ls -l|grep "^...x..x..x"
列出以.txt结尾的所有文件
#ls -l|grep "/.txt$"
列出所有空行
#ls -l|grep "^$"
例子3:我们接着例子1来,如果我们想找以两个“zhou"开头的行怎么办呢?
#grep "/(zhou/)/{2/}" aa.txt
两次以上呢?
#grep "/(zhou/)/{2,/}" aa.txt
一次到3次呢?
#grep "/(zhou/)/{1,3/}" aa.txt
例子4:找出所有以大写字母开头的行
#grep "^[A-Z]" aa.txt
以大写字母开头,以"jun"结尾的
#grep "^[A-Z].*jun$" aa.txt
例子5:ip地址经常需要用,怎么匹配呢?这要分为几种情况,下面给出一种办法:
#ITEM="/([01]/{0,1/}[0-9]/{1,2/}/|2[0-4][0-9]/|25[0-5]/)"
#grep "^$ITEM/.$ITEM/.$ITEM" ipaddr
ipaddr是一些ip地址,自己看吧,我测试了,可以正确匹配