【Linux系列教程】过滤的使用

一、基本使用

  • grep [选项] “条件” 文件目录
[root@localhost ~]# grep "root" /etc/passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]# ifconfig ens33 | grep "netmask"
        inet 192.168.140.161  netmask 255.255.255.0  broadcast 192.168.140.255

1. -o 仅显示符合条件的内容

[root@localhost ~]# grep -o "r..t" /etc/passwd
root
root
root
root
r/ft

2. -i 忽略大小写

[root@localhost ~]# grep -i "aa" /opt/file01
aa
AA
Aa
aA

3. -v 反向过滤

[root@localhost ~]# grep -v "^#" /etc/fstab	#开头不包含“#”的
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=714c9df7-be4f-4480-a15a-bca5716ecb29 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

4. -e 多条件过滤

[root@localhost ~]# grep -e "^#" -e "^UUID" /etc/fstab	#过滤包含“#”和开头是UUID的
#
# /etc/fstab
# Created by anaconda on Fri Feb 17 14:13:18 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=714c9df7-be4f-4480-a15a-bca5716ecb29 /boot                   xfs     defaults        0 0

5. -n 显示行号

[root@localhost ~]# grep -n "[0-9]\{1,3\}" /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
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
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin

6. -E 支持正则表达式

[root@localhost ~]# grep -E "(ab){2,}" /usr/share/dict/words
attababy
Habab
kabab
Kababish
kababs
Nodababus

二、正则表达式

1.匹配单个字符的元字符

. 	#任意单个字符
[rkb]	#或者r 或者k 或者b

-	#连续的字符

[a-z]	#任意单个小写字母
[A-Z]	#任意单个大写字母
[A-Za-z]	#任意单个字母
[0-9]	#任意单个数字
[a-zA-Z0-9]	#任意单个字母和数字

^ 取反
[^a-z]	#不包括任意单个小写字母
^[^a-z]	#开头不包括任意单个小写字母

2.匹配字符出现的次数

* 	#前一个字符连接出现任意次,可以是0次
\+	#前一个字符至少出现1次,最多出现无限次
\?	#前一个字符最多出现1次,最少出现0次
\{3\}	#前一个字符精确出现3次
\{3,5\}	#前一个字符至少出现3次,至多出现5次
\{3,\}	#前一个字符至少出现3次,至多出现无限次

3.使用正则表达式查看机器IP

ifconfig | grep -E -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"