10月16日任务

grep(上中下)

grep [-cinvABC] 'word' 文件名 (过滤指定关键词)

-c 行数 

-i 不区分大小写 

-n 显示行号 

-v 取反 

-r 遍历所有子目录 

-A 后面跟数字,过滤出符合要求的行以及下面n行 

-B 同上,过滤出符合要求的行以及上面n行 

-C 同上,同时过滤出符合要求的行以及上下各n行

 

[root@test ~]# which grep  (关键词表红,centos6及之前版本是不加--color=auto,无颜色

alias grep='grep --color=auto'

    /usr/bin/grep

[root@test ~]# grep 'nologin' passwd

6e5e021f6c963c734819402ebb69a999671.jpg

 

[root@test ~]# grep -c 'nologin' passwd  行数

8

 

[root@test ~]# grep -n 'nologin' passwd  行号

2:bin:x:1:1:bin:/bin:/sbin/nologin

3:daemon:x:2:2:daemon:/sbin:/sbin/nologin

4:adm:x:3:4:adm:/var/adm:/sbin/nologin

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10:postfix:x:89:89::/var/spool/postfix:/sbin/nologin

11:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

12:chrony:x:997:995::/var/lib/chrony:/sbin/nologin

 

[root@test ~]# grep -ni 'nologin' passwd  不区分大小写

2:bin:x:1:1:bin:/bin:/sbin/NOLOGIN

3:daemon:x:2:2:daemon:/sbin:/sbin/nologin

4:adm:x:3:4:adm:/var/adm:/sbin/nologin

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/Nologin

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10:postfix:x:89:89::/var/spool/postfix:/sbin/nologin

11:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/noloGiN

12:chrony:x:997:995::/var/lib/chrony:/sbin/noLogin

 

[root@test ~]# grep -vni 'nologin' passwd  取反,不是nologin行提取出来

1:root:x:0:0:root:/root:/bin/bash

6:sync:x:5:0:sync:/sbin:/bin/sync

7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8:halt:x:7:0:halt:/sbin:/sbin/halt

13:dhaskdhkashdkasaaaa22222222222

14:342432423432dsfsdfsdfsd

15:432432.txt

16:321321432.txt

17:$sdfdsfd

18:32131231

19:22233333333

20:22221111

21:222aaaaaaaaa

22:<

23:>

24:{

25:?

26:]

27:

 

[root@test ~]# grep -r 'root' /root/     子目录及孙目录下面的文件遍历一遍

c9cb6128e6c3681ed68978c2326289a7b6d.jpg

[root@test ~]# grep -r 'root' /etc/ > /tmp/grep.log

[root@test ~]# grep passwd !$

grep passwd /tmp/grep.log

/etc/passwd:root:x:0:0:root:/root:/bin/bash

/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin

/etc/passwd-:root:x:0:0:root:/root:/bin/bash

/etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin

/etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.

 

[root@test ~]# grep -nA2 'root' passwd  过滤出符合要求的行以及下面n行

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

 

[root@test ~]# grep -nB2 'spool' passwd  过滤出符合要求的行以及上面n行

3-daemon:x:2:2:daemon:/sbin:/sbin/nologin

4-adm:x:3:4:adm:/var/adm:/sbin/nologin

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/Nologin

--

7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8-halt:x:7:0:halt:/sbin:/sbin/halt

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10:postfix:x:89:89::/var/spool/postfix:/sbin/nologin

 

[root@test ~]# grep -nC2 'mail' passwd 同时过滤出符合要求的行以及上下各n行

7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8-halt:x:7:0:halt:/sbin:/sbin/halt

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10-postfix:x:89:89::/var/spool/postfix:/sbin/nologin

11-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/noloGiN

 

 

grep/egrep示例

grep -n 'root' /etc/passwd 

grep -nv 'nologin' /etc/passwd 

grep '[0-9]'/etc/inittab 

grep -v '[0-9]'/etc/inittab 

grep -v '^#' /etc/inittab 

grep -v '^#' /etc/inittab|grep -v  '^$' 

grep '^[^a-zA-Z]' test.txt 

grep 'r.o' test.txt grep 'oo*' test.txt 

grep '.*' test.txt 

grep 'o\{2\}' /etc/passwd 

egrep 'o{2}' /etc/passwd 

egrep 'o+' /etc/passwd 

egrep 'oo?' /etc/passwd 

egrep 'root|nologin' /etc/passwd 

egrep '(oo){2}' /etc/passwd

 

正则表达式:

[ ]方括号里面任意一个字符

[root@test ~]# grep '[0-9]' passwd  (0-9范围,只要数字就能过滤出来

0b4c5e0e7ba945b40b55d4aa13d701b05f0.jpg

 

非数字的行过滤出来

[root@test ~]# grep -v '[0-9]' passwd

$sdfdsfd

<

>

{

?

]

 

^以什么字符开头的行

[root@test ~]# grep -n '^#' passwd

3:#daemon:x:2:2:daemon:/sbin:/sbin/nologin

6:#sync:x:5:0:sync:/sbin:/bin/sync

10:#postfix:x:89:89::/var/spool/postfix:/sbin/nologin

20:#22221111

 

取反非以什么字符开头的行

[root@test ~]# grep -nv '^#' passwd

1:root:x:0:0:root:/root:/bin/bash

2:bin:x:1:1:bin:/bin:/sbin/NOLOGIN

4:adm:x:3:4:adm:/var/adm:/sbin/nologin

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/Nologin

7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8:halt:x:7:0:halt:/sbin:/sbin/halt

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

11:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/noloGiN

12:chrony:x:997:995::/var/lib/chrony:/sbin/noLogin

13:dhaskdhkashdkasaaaa22222222222

14:342432423432dsfsdfsdfsd

15:432432.txt

16:321321432.txt

17:$sdfdsfd

18:32131231

19:22233333333

21:222aaaaaaaaa

22:<

23:>

24:{

25:?

26:]

27:

 

[root@test ~]# grep -nv '^#' /etc/sos.conf

1:[plugins]

2:

4:

5:[tunables]

6:

9:

 

[^ ]非0-9,不是数字任何一个字符就能符合条件

[root@test ~]# grep '[^0-9]' passwd

e334e6edcd00d825a0ff4f14dbb905f4ca9.jpg

 

^[^ ] 以一个非数字的字符开头的行

[root@test ~]# grep '^[^0-9]' 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

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/Nologin

#sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

#postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/noloGiN

chrony:x:997:995::/var/lib/chrony:/sbin/noLogin

dhaskdhkashdkasaaaa22222222222

$sdfdsfd

#22221111

<

>

{

?

]

[root@test ~]# grep -nv '^[^0-9]' passwd

14:342432423432dsfsdfsdfsd

15:432432.txt

16:321321432.txt

18:32131231

19:22233333333

21:222aaaaaaaaa

27:

非大小写字母开头的行

[root@test ~]# grep -n '^[^a-zA-Z]' passwd

3:#daemon:x:2:2:daemon:/sbin:/sbin/nologin

6:#sync:x:5:0:sync:/sbin:/bin/sync

10:#postfix:x:89:89::/var/spool/postfix:/sbin/nologin

14:342432423432dsfsdfsdfsd

15:432432.txt

16:321321432.txt

17:$sdfdsfd

18:32131231

19:22233333333

20:#22221111

21:222aaaaaaaaa

22:<

23:>

24:{

25:?

26:]

 

.点表示任意的一个字符

[root@test ~]# grep -n 'r.o' passwd

1:root:x:0:0:root:/root:/bin/bash

15:rooooooooooooooooooot

17:rao

4e8dddeebecbea8781444ae5a4c31e1c485.jpg

 

*星号 星号左边的字符重复零到n次

[root@test ~]# grep -n 'ro*o' passwd

1:root:x:0:0:root:/root:/bin/bash

12:chrony:x:997:995::/var/lib/chrony:/sbin/noLogin

15:rooooooooooooooooooot

16:roat

c843787b3bce658b8155ed70f4c7fd5c91f.jpg

 

[root@test ~]# grep -n 'o*o' passwd

1:root:x:0:0:root:/root:/bin/bash

3:#daemon:x:2:2:daemon:/sbin:/sbin/nologin

4:adm:x:3:4:adm:/var/adm:/sbin/nologin

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/Nologin

7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10:#postfix:x:89:89::/var/spool/postfix:/sbin/nologin

11:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/noloGiN

12:chrony:x:997:995::/var/lib/chrony:/sbin/noLogin

15:rooooooooooooooooooot

16:roat

17:rao

18:r???o

dbe8fb28cac43c41a0d6dc6652e69f2c061.jpg

 

 

.*  零个至任意一个字符匹配

[root@test ~]# grep -n '.*' passwd

6d1af6bcab7c9a5e154398e4737e2f30b42.jpg

 

匹配行

[root@test ~]# grep -n 'sshd.*noloGiN' passwd

11:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/noloGiN

 

字符{数字}  表示字符出现几次

[root@test ~]# grep -n 'o\{2\}' passwd

1:root:x:0:0:root:/root:/bin/bash

5:lp:x:4:7:lp:/var/spool/lpd:/sbin/Nologin

9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10:#postfix:x:89:89::/var/spool/postfix:/sbin/nologin

15:rooooooooooooooooooot  (oo出现的组合,分别去匹配

7a5367962f516dc4e235a067eb86b76c239.jpg

 

表示字符的出现范围o oo ooo 或者没有

[root@test ~]# grep -n 'o\{0,3\}' passwd

349e4a289887e3150a039418d7eb41c5067.jpg

 

不用脱义符号

[root@test ~]# grep -En 'o{2}' passwd

53e64136f3fd3968fd8f0c76f56b8ed93bd.jpg

 

[root@test ~]# grep -En '(oo){2}' passwd

ba1f369f3fb11d176d276c118b31abf12c9.jpg

 

grep -E等于egrep  不需要脱义符号

 

+ 表示加号前面的字符一次或者多次

[root@test ~]# egrep 'o+o' passwd

8228e5e6fbf6b2f08913deeb63f89d7c9fb.jpg

[root@test ~]# egrep 'o+a' passwd

697d18e93f3addad36bd88f2992585caff6.jpg

 

?表示问号前面的字符零次或者一次

[root@test ~]# egrep 'o?o' passwd

75799e595c3c7e6f1053a510b02faa7f9c6.jpg

[root@test ~]# egrep 'o?lo' passwd

d691c63606ca68f88c49b1a3126755a6124.jpg

 

|表示或者的意思

[root@test ~]# egrep 'root|nologin' passwd

8ee44624b7faf6cc26a10573972b7e29659.jpg

 

[root@test ~]# egrep 'root|nologin|14' passwd

4371a108a4c21a85393755f299444deb389.jpg

[root@test ~]# egrep -ni 'root|nologin|14' passwd  不区分大小写

9cba45c07879fa995b49400411123c2c0df.jpg

转载于:https://my.oschina.net/u/3803396/blog/2246907

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值