1. 正则表达式与通配符 正则表表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
通配符用来在系统中匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。
2. 基础正则表达式 范例: 1. “*”前一个字符匹配0次或任意次 [rootlocalhost ~]# grep “a*” 文件名 匹配所有内容包括空白行
[rootlocalhost ~]# grep “aa*” 文件名 匹配至少含有一个a的行
[rootlocalhost ~]# grep “aaa*” 文件名 匹配最少含有2个连续a的字符串
[rootlocalhost ~]# grep “aaaaa*” 文件名 匹配最少含有4个连续a的字符串
2. “.”匹配除了换行符外任意一个字符 [rootlocalhost ~]# grep “s…d” 文件名 匹配在s和d之间一定有两个字符的单词
[rootlocalhost ~]# grep “s.*d” 文件名 匹配在shed之间有任意字符的行
[rootlocalhost ~]# grep “.*” 文件名 匹配所有内容
3. “^”匹配行首,”$“匹配行尾 [rootlocalhost ~]# grep “^M” 文件名 匹配以M开头的行
[rootlocalhost ~]# grep “s$” 文件名 匹配以s结尾的行
[rootlocalhost ~]# grep -n “^$” 文件名 匹配空白行 ,并列出行号4. “[]” 匹配中括号中指定的任意一个字符。只匹配一个字符 [rootlocalhost ~]# grep “s[ao]id” 文件名 匹配s和i字母中,要不是a,要不是o的行
[rootlocalhost ~]# grep “[0-9]” 文件名 匹配任意一个数字的行
[rootlocalhost ~]# grep “1” 文件名 匹配用小写字母开头的行
[rootlocalhost ~]# grep “[a-z]” 文件名 匹配不用小写字母开头的行
[rootlocalhost ~]# grep “[a-zA-Z]” 文件名 匹配不用字母开头的行
5. “\”转义符 [rootlocalhost ~]# grep “.$” 文件名 匹配使用“.”结尾的行
6. “{n}” 表示前面的字符恰好出现n次 [rootlocalhost ~]# grep “sa{3|}” 文件名 匹配a字母连续出现3次的字符串所在的行
[rootlocalhost ~]# grep “[0-9]{3}” 文件名 匹配包含连续3个数字的字符串所在的行
a-z ↩︎