运维开发网

grep命令文本过滤

运维开发网 https://www.qedev.com 2020-10-25 12:56 出处:51CTO 作者:八年九月
1,grep命令 选项说明 --color=auto:对匹配到的文本着色显示; -v:显示不被模式匹配到的行; -i:忽略字符大小写; -n:显示匹配的行号; -c:统计匹配到的字符串; -o:仅显示匹配到的字符串; -q:静默模式,不输出任何信息; -A #:表示显示匹配到的行并显示该行后#行,#表示为数字; -B #:表示显示匹配到的行并显示该行前#行,#表示为数字; -C #:表示显示匹配到的行并显示该行前后各#行,#表示为数字; -e:实现多个选项的逻辑or或更新; -w:匹配整个单词; -E:使用ERE扩展正则,等效于egrep命令; -F:相当于fgrep,不使用正则表达式;

1,grep命令

选项说明

--color=auto:对匹配到的文本着色显示;
-v:显示不被模式匹配到的行;
-i:忽略字符大小写;
-n:显示匹配的行号;
-c:统计匹配到的字符串;
-o:仅显示匹配到的字符串;
-q:静默模式,不输出任何信息;
-A #:表示显示匹配到的行并显示该行后#行,#表示为数字;
-B #:表示显示匹配到的行并显示该行前#行,#表示为数字;
-C #:表示显示匹配到的行并显示该行前后各#行,#表示为数字;
-e:实现多个选项的逻辑or或更新;
-w:匹配整个单词;
-E:使用ERE扩展正则,等效于egrep命令;
-F:相当于fgrep,不使用正则表达式;

例1

查找/etc⽬录下,所有包含conf字串的⽂件

[[email protected] /etc]#ls -R |grep conf
asound.conf
autofs.conf
autofs_ldap_auth.conf
brltty.conf
chkconfig.d
chrony.conf

例2

显⽰/etc/passwd⽂件中包含root字串所在的⾏并显⽰⾏号

[[email protected] ~]#grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

例3

显⽰/etc/passwd⽂件中,不包含bash字串的⾏,并显⽰⾏号

[[email protected] ~]#grep -nv bash /etc/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
6:sync:x:5:0:sync:/sbin:/bin/sync
...

例4

显⽰/etc/passwd⽂件中,包含root字串的⾏的总⾏数

[[email protected] ~]#grep -c root /etc/passwd
2

例5

仅显⽰/etc/passwd⽂件中的root字串及所在的⾏号

[[email protected] ~]#grep -no root /etc/passwd
1:root
1:root
1:root
10:root

例6

显⽰/etc/passwd⽂件中,包含root字串的⾏和其下2⾏的内容

[[email protected] ~]#grep -A 2 root /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
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

例7

显⽰/etc/passwd⽂件中,包含root字串的⾏和其上2⾏的内容

[[email protected] ~]#grep -B 2 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
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

例8

显⽰/etc/passwd⽂件中,包含root字串的⾏和其上下各2⾏的内容

[[email protected] ~]#grep -C 2 root /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
--
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
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

例9

扫描192.168.0/24⽹段,显⽰在线的ip地址

[[email protected] ~]#nmap -sP 192.168.0/24 |grep -B1 "Host is up"|grep for|cut -d " " -f 5

192.168.0.1

192.168.0.4

192.168.0.6

192.168.0.5

例10

显⽰/etc/passwd⽂件中,包含root字串或包含nologin字串的⾏

[[email protected] ~]#grep -e root -e nologin /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
. . .

或写成:

[[email protected] ~]#grep "root\|nologin" /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
. . .

例11

匹配root整个单词

[[email protected] ~]#echo -e  "root\nnologin" |grep -w root 
root

[[email protected] ~]#echo -e  "root\nnologin" |grep "\<root\>"
root
[[email protected] ~]#echo -e  "root\nnologin" |grep "\broot\b"
root

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号