grep 整理总结

grep作用: 主要用于查询功能的字符串处理工具
grep参数:
-c:打印符合要求的行数
-n:在输出符合要求的行同时连同行号一起输出
-v:去反,输出不符合要求的行
-A n:表示将每条符合要求的记录之后n行一同输出
-B n:表示将每条符合要求的记录之前n行一同输出
-C n:相当于A和B的组合,表示将每条符合要求的记录前后n行一同输出
-r:会把目录下面所有的文件全部遍历
-i:查看时不区分大小写
-E: 匹配多个字符,相当于egrep
--color=auto 关键字显示颜色

1、用”-r“参数搜索目录下所有文件

[root@ruizhong ~]# grep -nr "root" /etc/passwd     #搜索/etc/passwd目录下所有文件中带有"root"的行
1:root:x:0:0:root:/root:/bin/bash
11:operator:x:11:0:operator:/root:/sbin/nologin

2、 用”-c“参数来统计符合条件结果的行数

[root@ruizhong ~]# grep -c "root" /etc/passwd      #统计出/etc/passwd目录下所有文件中带有"root"的行
2

3、参数"-A"、“-B”、“-C”

[root@ruizhong ~]# grep -n -A2 'root' /etc/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
--
11:operator:x:11:0:operator:/root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

[root@ruizhong ~]# grep -n -B2 'root' /etc/passwd  #指定匹配行, 前两行文件输出
1:root:x:0:0:root:/root:/bin/bash                  #第一行之前没有内容, 所以只有一行
--
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11:operator:x:11:0:operator:/root:/sbin/nologin

[root@ruizhong ~]# grep -n -C2 'root' /etc/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
--
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10-uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11:operator:x:11:0:operator:/root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

4、更多例子

[root@test01 ~]# grep -n 'root' /etc/passwd                   #关键字,行号
[root@test01 ~]# grep -n -v 'root' /etc/passwd                #关键字,行号,取反
[root@test01 ~]# grep '[0-9]' /etc/passwd                     #包含数字的行
[root@test01 ~]# grep -v '[0-9]' /etc/passwd                  #包含数字的行,取反
[root@test01 ~]# grep -v '^#' /etc/passwd                     #“#”号开头,取反
[root@test01 ~]# grep -v '^$' /etc/passwd | grep -v '^#'      #空行与#开头的行,取反
[root@test01 ~]# grep '^[a-zA-Z]' /etc/passwd                 #以字母开头的行
[root@test01 ~]# grep '^[^0-9]' /etc/passwd                   #首字母不是数字的行
[root@test01 ~]# grep 'o{2,}' /etc/passwd                   #匹配o至少重复两次的所有行
[root@test01 ~]# grep 'o{2,5}t'  /etc/passwd                #匹配o重复出现2到5此,并以t结尾的行

本文转自:http://www.90root.com/index.php/archives/44.html
更多grep: http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html
更多grep: http://www.cnblogs.com/end/archive/2012/02/21/2360965.html

原文地址:https://www.cnblogs.com/migongci0412/p/5963044.html