grep练习

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

 

 

posted @ 2019-01-17 20:38  正义的朋友  阅读(208)  评论(0编辑  收藏  举报