Linux之shell脚本的正则表达式

一、正则表达式

  • 通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符
[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
### 1.3位置锚定

^ #行首锚定, 用于模式的最左侧
$ #行尾锚定,用于模式的最右侧
^PATTERN$ #用于模式匹配整行 (单独一行 只有root)
^$ #空行
*$ # 空白行

< 或 \b   #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)
> 或 \b        #词尾锚定,用于单词模式的右侧
<PATTERN>     #匹配整个单词


  1. [:space:] ↩︎

本文作者:德国南部之星

本文链接:https://www.cnblogs.com/mtwm/p/17623899.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   德国南部之星  阅读(63)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑