shell中的正则表达式

shell中的正则表达式

正则表达式与通配符的区别

正则表达式(Regular Expression)用来在文件中匹配符合条件的字符串(常用命令grep 、awk、sed),通配符用来匹配符合条件的文件名(常用的命令find、ls、cp)

基础正则 grep sed awk -> 扩展正则 egrep 、sed -r、awk

正则表达式

基础正则元字符:

* 匹配前一个字符0次或任意多次
. 匹配除了换行符外任意一字符
^ 匹配行首
$ 匹配行尾
^$ 匹配空行(行首行尾啥都没有,一般与-v配合)
[] 匹配括号中任意一个字符

示例:

shell中的正则表达式
* 匹配前一个字符0次或任意多次
shell中的正则表达式
 '[^字符]'匹配除了括号内容之外的所有字符

\转义符,用于取消特殊符号的含义

例子:匹配以“.”结尾的行 grep ".$"(此时.有其原先的含义但被转义符变为普通字符)

shell中的正则表达式
shell中的正则表达式

[]匹配括号中任意一个字符,[0-9]为匹配任意一个数字,[A-Za-z]为匹配任意一个字母 [a-z][0-9]意为匹配小写字和一位数字构成的两位字符   [0-9a-zA-Z]为匹配任意大小写字母和数字

shell中的正则表达式
shell中的正则表达式

基础正则匹配前一个字符出现次数范围时大括号前要加转义符(在扩展正则中不需要反斜杠,建议使用扩展正则)

\{n\} 表示其前面的字符恰好出现n次,例如[0-9]\{4\} 匹配4位数字,[1][2-8][0-9]\{9\}匹配手机号码
\{n,\} 表示其前面的字符出现不小于n次,例如[0-9]\{2,\}表示2位及以上数字
\{n,m\} 表示其前面字符至少出现n次,最多出现m次,例如[a-z]\{6,8\}匹配6-8位的小写字母
\{,m\} 匹配前一个字符字符最多出现m次

扩展正则:

+ 前一个字符匹配一次或任意多次
?匹配前一个字符0次或1次【?* +范围依次向右】
()分组,匹配其整体为一个字符,及模式单元,可以理解为由多个单个字符组成的大字符
|   匹配两个或多分支选择,例如(dog)会匹配dog dogdog dogdogdog,但hello(cat|dog)会匹配hello cat及hello dog
当然扩展正则中也包括{n} {n,m} {n,} {,m}

示例:

shell中的正则表达式
shell中的正则表达式
shell中的正则表达式

下面这个案例作为总体的练习:

shell中的正则表达式
shell中的正则表达式
shell中的正则表达式
shell中的正则表达式
shell中的正则表达式

练习:匹配邮箱和精准的IP地址

匹配邮箱:

shell中的正则表达式
shell中的正则表达式

过滤IP:

思路:多种限制情况

百位十位个位
0 0-90-9
10-9 0-9
20-40-9
350-5
shell中的正则表达式
shell中的正则表达式

发布者:LJH,转发请注明出处:https://www.ljh.cool/5450.html

(1)
上一篇 2022年8月20日 下午1:50
下一篇 2022年8月28日 上午2:34

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注