1.查找特定字符串
[root@server3 mnt]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
rooot
rooooot
Root
ROOOT
roooooot
test
tes0t
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@server3 mnt]# grep -n 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
2.反向选择
[root@server3 mnt]# grep -nv 'root' passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:rooot
5:rooooot
6:Root
7:ROOOT
8:roooooot
9:test
10:tes0t
11:adm:x:3:4:adm:/var/adm:/sbin/nologin
3.忽略大小写
[root@server3 mnt]# grep -ni 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
6:Root
4.利用[]查找特定字符
[root@server3 mnt]# grep -n '[rR]oot' passwd
1:root:x:0:0:root:/root:/bin/bash
6:Root
5.查找特定的字符串
[root@server3 mnt]# grep -n 'oo' passwd
1:root:x:0:0:root:/root:/bin/bash
4:rooot
5:rooooot
6:Root
8:roooooot
去掉oo前面的r
[root@server3 mnt]# grep -n '[^r]oo' passwd
4:rooot
5:rooooot
6:Root
8:roooooot
此时会有疑问,为什么‘r’并没有全部被过滤掉呢?因为在4,5,7行之中,oo的前面也可呢个时o,例r(ooo)t。
6.让oo前面不再有小写字符
[root@server3 mnt]# grep -n '[^a-z]oo' passwd
6:Root
也可一以用
[root@server3 mnt]# grep -n '[^[:lower:]]oo' passwd
6:Root
7.过滤出以bin开头的
[root@server3 mnt]# grep -n '^bin' passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
8.过滤出开头是小写字符的行数
[root@server3 mnt]# grep -n '^[a-z]' passwd
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:rooot
5:rooooot
8:roooooot
9:test
10:tes0t
11:adm:x:3:4:adm:/var/adm:/sbin/nologin
也可以用这种方式替换
grep -n '^[[:lower:]]' passwd
9.过滤出开头不是英文字母的
[root@server3 mnt]# grep -n '^[^[a-zA-Z]]' passwd
10.找出行尾结束时为小数点(.)的那一行
[root@server3 mnt]# vim passwd #编辑文件,加几个小数点
[root@server3 mnt]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
rooot
rooooot
Root
ROOOT
roooooot.
test
tes0t.
adm:x:3:4:adm:/var/adm:/sbin/nologin.
[root@server3 mnt]# grep -n '.$' passwd
8:roooooot.
10:tes0t.
11:adm:x:3:4:adm:/var/adm:/sbin/nologin.
11.找出空白行
[root@server3 mnt]# vim passwd
[root@server3 mnt]# grep -n '^$' passwd
10:
11:
12.找出‘r??t’的字符串
[root@server3 mnt]# grep -n 'r..t' passwd
1:root:x:0:0:root:/root:/bin/bash
13.找出至少含有两个oo以上的字符串
[root@server3 mnt]# grep -n 'ooo*' passwd
1:root:x:0:0:root:/root:/bin/bash
4:rooot
5:rooooot
6:Root
8:roooooot.
14.找出开头为r,结尾为t,中间至少有一个o的字符串
[root@server3 mnt]# grep -n 'ro*t' passwd
1:root:x:0:0:root:/root:/bin/bash
4:rooot
5:rooooot
8:roooooot.
15.用.和*结合实验
[root@server3 mnt]# grep -n 'r.*t' passwd
1:root:x:0:0:root:/root:/bin/bash
4:rooot
5:rooooot
8:roooooot.
16.找到2-5个o的字符串
[root@server3 mnt]# grep -n 'ro{2,5}t' passwd
1:root:x:0:0:root:/root:/bin/bash
4:rooot
5:rooooot
17.找到3个o以上的字符串
[root@server3 mnt]# grep -n 'ro{3,}' passwd
4:rooot
5:rooooot
8:roooooot.
18.找到自己ip地址的行
[root@server3 mnt]# ip addr | grep -n 'eth0$'
9: inet 172.25.8.3/24 brd 172.25.8.255 scope global eth0