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)
^$ #空行
[1]*$ # 空白行
< 或 \b #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)
> 或 \b #词尾锚定,用于单词模式的右侧
<PATTERN> #匹配整个单词
[:space:] ↩︎
本文作者:德国南部之星
本文链接:https://www.cnblogs.com/mtwm/p/17623899.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步