目录
一、正则表达式
- 通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符
[localhost ~]#man 7 regex
#可以使用man手册帮助
1.1 元字符
. 匹配任意单个字符,可以是一个汉字
[] 匹配指定范围内的任意单个字符,示例:[zhou] [0-9] [] [a-z A-Z] [:alpha:]
[^] 匹配指定范围外的任意单个字符,示例:[^zhou] [^a.z] [a.z]
[root@localhost ~]#ls /etc/|grep rc[.0-6]
#此处的点代表字符
[root@localhost ~]#ls /etc/ | grep 'rc\.'
#点值表示点需要转义
[root@localhost ~]# grep r..t /etc/passwd
#r..t ..代表任意两个字符
[root@localhost ~]# echo abc |grep a.c
#表示原来的点需要加\转义
[root@localhost ~]# echo abc |grep a\.c
#不加引号有时匹配会有出入
[root@localhost ~]# echo abc |grep 'a\.c'
#标准格式需要加'' 或者""
[root@localhost ~]# ls |grep '[zhou].txt'
#匹配[]中任意一个字符
[root@localhost ~]# ls [a-d].txt
#通配符
[root@localhost ~]# ls |grep '[a-d].txt'
#真正的小写在正则表达式中
[root@localhost ~]# ls |grep '[^a-z].txt'
#显示非小写字母
[root@localhost ~]# ls |grep '[^a.z].txt'
#[]里就是本意不需要转义
1.2 表示次数
* #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.* #任意长度的任意字符,不包括0次
\? #匹配其前面的字符出现0次或1次,即:可有可无
\+ #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
\{n\} #匹配前面的字符n次
\{m,n\} #匹配前面的字符至少m次,至多n次
\{,n\} #匹配前面的字符至多n次,<=n
\{n,\} #匹配前面的字符至少n次
示例
[root@localhost ~]#echo 2452450982 | grep '[0-9]\{5,12\}' #过滤QQ号
2452450982
[root@localhost ~]#ifconfig ens33 | grep netmask #匹配子网掩码
inet 192.168.8.100 netmask 255.255.255.0 broadcast 192.168.8.255
[root@localhost ~]#ifconfig ens33 | grep netmask | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' #匹配地址
192.168.8.100
255.255.255.0
192.168.8.255
[root@localhost ~]#ifconfig ens33 | grep netmask | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' | head -1 #匹配IP地址
192.168.8.100
[root@localhost ~]#ifconfig ens33 | grep netmask | tr -s ' ' | cut -d ' ' -f3 #匹配IP地址
192.168.8.100
[root@localhost ~]#cat /etc/fstab | grep -o '\b[[:alpha:]]\+\b' | wc -l #匹配单词数
46
[root@localhost ~]#cat /etc/fstab | grep -v '^$' | gr
标签:字符,shell,grep,正则表达式,ls,Linux,匹配,root,localhost
From: https://www.cnblogs.com/mtwm/p/17623899.html