shell脚本编程学习笔记5——正则表达式
1,简介
正则表达式,用来在文件中匹配符合条件的字符串,包含匹配。注意是文件中选择字符串,和通配符是
不同的。grep,awk,sed等命令可以支持正则表达式
通配符,是用来选择符合条件的文件名,完全匹配。
ls,find,cp可用通配符,不能用正则表达式
2,基础正则表达式
* 前一个字符匹配0次或者任意多次
. 匹配除了换行符外的任意一种字符 也就是除了\n
^ 匹配行首
$ 匹配行尾
[] 匹配括号中指定的任一字符,至匹配一个字符。[abcde],[a-z],[0-9]
[^] 匹配括号中字符以外的任意一个字符。也就是上面取非。
\ 转义符
\{n\} 表示前面的字符恰好出现n次,
\{n,\} 表示前面的字符出现不小于n次
\{n,m\} 表示前面的字符至少出现n次,最多出现m次。
实例
grep "a*" filename //匹配所有的内容,包括空白行
grep "aa*" filename //匹配所有含a的行,至少一个
grep "aaa*" filename //匹配至少包含两个连续a的行
grep "aaaa*" filename //匹配至少包含连续四个a的行
grep "s..d" filename //匹配s和d,两个字母之间一定有两个字符串的单词
grep "s.*d" filename //匹配s和d字母之间的任意字符,包含空格
grep ".*" filename //匹配所有的内容
grep "^M" filename //大写M开头的行
grep "A$" filename //大写A结尾的行
grep "^$" filename //匹配空白行
grep "^[1-9]" filename //1-9数字开头的行
grep "[^A-Z]" filename //匹配非大写字母的行
grep "\." filename //匹配使用.结尾的行
grep "A\{3\}" filename
grep "1[3-8][0-9]\{9\}"
grep "sa\{1,3\}i" filename