语法:grep [选项] 文件
作用:过滤关键字,并且把关键字所在行的内容都打印出来
|:管道符,作用,将管道符左边命令的标准输出交给管道符右边命令的标准输入来处理。
管道符后面的命令,可以处理管道符前面命令输出的结果。
# 过滤出b.txt中,含有‘风‘所在行的内容都打印出来
[root@localhost ~]# grep ‘风‘ b.txt
江山风景美如画,
一句卧槽风好大。
# 过滤含有卧,所在行的内容
[root@localhost ~]# grep ‘卧‘ b.txt
卧槽
一句卧槽风好大。
# 过滤以卧开头的内容
[root@localhost ~]# grep ‘^卧‘ b.txt
卧槽
^: 以....开头
$: 以....结尾
# 过滤以大结尾的内容
[root@localhost ~]# grep ‘大$‘ b.txt
一句卧槽风好大
风好大
# 正则表达式
[root@localhost ~]# grep ‘[a-z]‘ b.txt
My name is zls
18 years old
[root@localhost ~]# grep ‘[a-Z]‘ b.txt
My name is zls
18 years old
[root@localhost ~]# grep ‘[A-z]‘ b.txt
grep: Invalid range end
[root@localhost ~]# grep ‘[z]‘ b.txt
My name is zls
[root@localhost ~]# grep ‘[a-f]‘ b.txt
My name is zls
18 years old
# . 表示任意字符
[root@localhost ~]# grep ‘.‘ b.txt
卧槽
作者:曾老湿
江山风景美如画
本想吟诗赠天下
奈何自己没文化
一句卧槽风好大
曾老湿
风好大
My name is zls
18 years old
# * 匹配多次
[root@localhost ~]# grep ‘.*‘ b.txt
卧槽
作者:曾老湿
江山风景美如画
本想吟诗赠天下
奈何自己没文化
一句卧槽风好大
曾老湿
风好大
My name is zls
18 years old
# grep选项:
grep 选项 参数
. 任意字符
* 匹配多次
-n 过滤出来的内容显示行号
-o 只过滤出来关键字,不显示其他内容
-i 不区分大小写
-E 扩展正则,等于egrep
-v 取反
-w 精确匹配
-A 查看关键字,并且会显示关键字后的N行内容
-B 查看关键字,并且会显示关键字前N行内容
-C 查看关键字,并且会显示关键字前后N行内容
-r 递归过滤
例:
#会显示所有内容
[root@aaa ~]# grep ‘.*‘ /etc/services
#显示行号
[root@aaa ~]# grep -n ‘.*‘ /etc/services
#只过滤出来关键字
[root@aaa ~]# grep -o ‘root‘ /etc/passwd
root
root
root
root
#不区分大小写
[root@aaa ~]# grep -i ‘nimbus‘ /etc/services
nimcontroller 48000/tcp # Nimbus Controller
nimcontroller 48000/udp # Nimbus Controller
nimspooler 48001/tcp # Nimbus Spooler
nimspooler 48001/udp # Nimbus Spooler
nimhub 48002/tcp # Nimbus Hub
nimhub 48002/udp # Nimbus Hub
nimgtw 48003/tcp # Nimbus Gateway
nimgtw 48003/udp # Nimbus Gateway
nimbusdb 48004/tcp # NimbusDB Connector
nimbusdbctrl 48005/tcp # NimbusDB Control
#支持扩展正则
[root@aaa ~]# grep -E ‘root|bin‘ /etc/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
#不输出root用户
[root@aaa ~]# grep -v ‘root‘ /etc/passwd
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
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
#精确匹配bin
[root@aaa ~]# grep -w ‘bin‘ /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
#查看关键字,并显示前2行内容
[root@aaa ~]# grep -B 2 ‘mail‘ /etc/passwd
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
#查看关键字,并显示后2行内容
[root@aaa ~]# grep -A 2 ‘mail‘ /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
#查看关键字,并显示前后2行内容
[root@aaa ~]# grep -C 2 ‘mail‘ /etc/passwd
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
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
#递归过滤
[root@aaa opt]# grep -r ‘tcy‘ /opt
/opt/tcy.txt:tcy
[root@aaa opt]# grep -Er ‘tcy|root‘ /opt
/opt/tcy.txt:tcy
/opt/tcy.txt:root
原文:https://www.cnblogs.com/tcy1/p/12553702.html