【Linux系列教程】过滤的使用
一、基本使用
[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}"