grep命令介绍
它是linux系统中常用的三大文本处理工具之一,grep与awk、sed被称为linux系统中的三剑客。
我们可以使用grep命令
他的命令格式是在文本中查找过滤出你所指定的字符串。他有点类似于网页和word等的CTRL+F键的快捷搜索。
.
使用格式
官方文档给的是:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
简单点说也就是:
grep [选项] '模式' 文件
.
常用选项:
-v #取反,只显示未匹配的内容,未匹配的不显示
-i #忽略大小写
-n #显示过滤出内容在所在文件的行号
-c #统计过滤出内容的行数
-w #精准匹配,被匹配的文本只能是单词,而不能是单词中的某一部分
-o #只显示被匹配的内容
-r #递归过滤
-R #递归过滤
-E #支持扩展的正则表达式
-A #显示过滤内容的前n行,after
-B #显示过滤内容的后多少行,before
-C #显示过滤内容上下的各n行,context
.
案例:
搜索含root字符串的行
[root@heibn ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
.
搜索不含/sbin/nologin字符串的行
[root@hebin ~]# grep -v '/sbin/nologin' /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
test:x:1000:1000::/home/test:/bin/bash
.
忽略大小写
[root@heibn ~]# grep -i 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
.
给过滤内容显示行号
[root@heibn ~]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
.
统计过滤出内容的行数
[root@hebin ~]# grep -c 'root' /etc/passwd
2
.
只显示root字符串
[root@hebin ~]# grep -o 'root' /etc/passwd
root
root
root
root
.
精准匹配,只过滤root这个单词
[root@hebin ~]# cat file.txt
hebin
arooto/:ccsa
barootoes:rooto:/sbin/roots
root
[root@hebin ~]# grep -w 'root' file.txt
root
.
递归过滤,当前目录下游目录的话,可以过滤该目录下的文件
[root@heibn ~]# grep -r 'root' ./* #递归过滤
./data/test.txt:root
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./passwd:roott
./passwd:rootooo
./services:rootd 1094/tcp # ROOTD
./services:rootd 1094/udp # ROOTD
./test/data.txt:root
[root@hebin ~]# grep -R 'root' ./* #递归过滤
./data/test.txt:root
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./passwd:roott
./passwd:rootooo
./services:rootd 1094/tcp # ROOTD
./services:rootd 1094/udp # ROOTD
./test/data.txt:root
.
扩展正则 | 表示或者 -E 支持扩展正则
[root@hebin ~]# grep -E 'root|adm' /etc/passwd
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@hebin ~]# egrep 'root|adm' passwd
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
.
关于匹配过滤的行向上及向下
[root@hebin ~]# grep -A1 'adm' /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@hebin ~]# grep -B1 'adm' /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@hebin ~]# grep -C1 'adm' /etc/passwd
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