grep正则方法示范

grep 正则过滤

正则是一组有规律的字符串
grep过滤字符并加以颜色显示

[root@localhost src]# grep 'nologin' passwd    
             过滤出nologin字符

grep正则方法示范

过滤出nologin字符并显示行号

[root@localhost src]# 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:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

grep -i 过滤出字符不区分大小写,第四行为大写的字符

[root@localhost src]# 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:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin

grep -v 过滤指定的取反字符,把nologin以外的显示出来

[root@localhost src]# grep -v 'nologin' passwd 
root:x:0:0:root:/root:/bin/bash
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

grep -r 'root' 遍历过滤包含root字符的文件,使用-r选项可以过滤多个文件中的关键字符,例如用来查看不同日期产生的输出日志关键信息

grep正则方法示范
grep -A 行数 遍历出指定字符行下的几行,如下列的ftp字符行下面的三行

[root@localhost src]# grep -A3 'ftp' passwd 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

grep -B 行数 遍历出指定字符行上的几行,如下面的ftp字符行上的三行

[root@localhost src]# grep -B3 'ftp' 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
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

grep -C 行数 遍历出指定字符行上下的几行,如下的ftp字符行上下的各三行

[root@localhost src]# grep -C3 'ftp' 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
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

grep正则匹配
首先看下操作的文件内容,文件内容包含多个空行和一个注释行,匹配文件中有注释、空行、数字混合行

grep正则方法示范

grep '[0-9]' 过滤匹配带有数字的行

[root@localhost src]# grep '[0-9]' 1.txt

grep正则方法示范截图显示带颜色的内容

grep -v '[0-9]' 取出不带数字的行

[root@localhost src]# grep -v '[0-9]' 1.txt 

grep正则方法示范
grep -v '^$' 和 '^#' 去除一个文件中空行和注释行,^表示以某字符开头,$表示以某字符结尾。^$一起使用代表匹配空行

[root@localhost src]# grep "^#" 1.txt 
#jfhdot4u89<F3>hiuy76flker
[root@localhost src]# grep -v  '^#' 1.txt |grep -v '^$'
1234576543235467653
xccvjhgjdf235346423dsfd23ase3
asf42345rrf34rf4rfcer
r4t3eqw34t5w4f4354
3435232454fd
f344fss44e4444
r4t5yty5
DDDDGGDSAGDFhjfjdgfdghgf<F2><F4><F
35greUGFG&&y8t6rR%Tf*(Y8Joh
"LF"D
KL#RJ(FYBN@Tfgyyy4wg7t6t6hniut
KFhu3u5485<F3><F4>u';":}
:F
dfjhotioreh4j<F3><F8>K?"
:KF
:KJH

grep '[^a-z]' 使用中括号取反a-z的值,截图示例如下

[root@localhost src]# grep '[^a-z]' 1.txt

grep正则方法示范

截图中可以清楚的看到除了a-z以外的所有字符都会被标记上颜色,如果中括号外再加上^开头符号。则只会显示非a-z开头的字符内容,如下

[root@localhost src]# grep '^[^a-z]' 1.txt 

grep正则方法示范
grep匹配任意一个字符,匹配结果中会包含任意一个字符

[root@localhost src]# grep 'a.c' 1.txt

grep正则方法示范

grep '.*' 匹配任意个任意字符。指定字符时则是这个字符后面的任意的全部字符

[root@localhost src]# grep 'h.*' 1.txt

grep正则方法示范
egrep匹配字符出现的第几次

[root@localhost src]# egrep 'h{2}' 1.txt

grep正则方法示范
egrep 'h+s' 匹配符合某两个符号的字段,无论这个两个相邻字符出现的次数

[root@localhost src]# egrep 'h+s' 1.txt 

grep正则方法示范
egrep 匹配包含某些字符的行,不管匹配到的字符前面或结尾是否存在其他不相关的字符,又例如ifconfig列出网卡信息

[root@localhost src]# egrep 'hd+' 1.txt

grep正则方法示范

grep正则方法示范

[root@localhost src]# ifconfig |egrep 'inet *.+ netmask' 

grep正则方法示范

egrep匹配多个字符(字符或另一个字符)

[root@localhost src]# egrep -i 'root|ftp' /etc/passwd

grep正则方法示范

egrep匹配指定字符出现次数,及匹配字符出现多次

[root@localhost src]# egrep '(oo)' passwd 

grep正则方法示范

对出现两次的字符进行匹配

[root@localhost src]# egrep '(oo){2}' passwd

grep正则方法示范

猜你喜欢

转载自blog.51cto.com/8844414/2135801