shell 正则表达式

基础正则表达式

*   前一个字符匹配0次或任意多次
.   匹配除了换行符以外任意一个字符。
^   匹配行首,例如^hello会匹配以hello开头的行
$   匹配行尾,例如hello$会匹配以hello结尾的行
[]  匹配括号中的任意一个字符,只匹配一个字符
[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字母和一位数字构成的两位字符
[^] 匹配括号以外的任意字符,[^0-9]匹配任意一位非数字字符
   转义符,用于取消将特殊符号的含义取消
{n}   表示前面的字符恰好出现n次
[0-9]{4}匹配4位数字
{n,}  表示前面的字符出现不小于n次,[0-9]{2,}表示两位及以上的数字
{n,m} 表示其前面的字符至少出现n次,最多出现m次,[a-z]{6,8}匹配6到8位小写字母

测试注意

"*" 前一个字符匹配0次,或任意多次
a* #匹配所有内容,包括空白行
aa* #匹配至少包含有一个a的行
aaa* #匹配至少包含两个连续a的字符串
aaaaa* #匹配至少包含四个连续a的字符串
"."匹配换行符以外任意一个字符
"s..d" 匹配在s和d两个字母之间一定有两个字符的单次
"s.*d" 匹配在s和d两个字母之间有任意字符
".*" 匹配所有内容
​
^ 匹配行首, $匹配行尾
^M 匹配大写M开头的行
n$ 匹配以小写n结尾的行
^$ 会匹配空白行 
 
[] 匹配中括号中指定的任意一个字符,只匹配字符
"s[ao]id" 匹配s和i字母中,要不是a,要不是o
"[0-9]" 匹配任意一个数字
"^[a-z]" 匹配用小写字母开头的行
 
[^] 匹配除中括号的字符以外的任意一个字符
"^[^a-z]" 匹配不用小写字母开头的行
"^[^a-zA-Z]" 匹配不用字母开头的行

正则表达式和通配符区别

正则表达式用来做字符串的模式分割,匹配,查找以及替换操作
正则表达式与通配符

>
  正则表达式用来在文件匹配符合条件的字符串,正则是包含匹配
  grep,awk,sed等命名可以支持正则表达式
> 
  通配符用来匹配符合条件的文件名,通配符是完全匹配
  ls,find,cd 这些命名不支持正则表达式,所以只能使用shell自己的通配符进行匹配

通配符

'*' 匹配任意内容
'?' 匹配任意一个内容
'[]' 匹配括号中的任意一个字符
原文地址:https://www.cnblogs.com/ssgao/p/8871611.html