bash Shell本身并不支持正则表达式,使用正则表达式的是Shell命令和工具,如grep,sed,awk等。但是bash Shell可以使用正则表达式中的一些元字符实现通配。
一、基本正则表达式元字符
1. “*” 表示重复该字符前边字符0次或多次。
2. “.” 表示任意字符.
3. “^” 表示该字符后边的字符是行首。
4. “$” 表示该字符前边的字符是行尾。
5. “[]”
- [a-z] 表示小写字母a-z
- [0-9] 表示数字0-9
- 若 “^” 在框里边,那么久表示非。
- [^a-c] 匹配不在a-c范围内的所有字符。
6. “” 转义字符
7. “<>” 精确匹配
- <the> 表示匹配the单词,但是不包阔含有the的单词,如they,there。
8. “{}” 指定前边字符重复的次数。
- {n} 匹配前面字符出项 n 次。
- {n,} 匹配前边字符最少出现 n 次。
- {n,m} 匹配前边字符出现 n-m 次。
二、正则表达式的扩展
1. “?” 匹配?前边字符 0 次或 1 次。
2. “+” 匹配前边字符1次或多次(最少也要1次)
3. “()”和“|” 通常两字符结合使用。表示一组可选的字符的集合。
- sjx(a|b|c)zl 只要含有a,b,c任意一个都可以匹配到。
- 其实()很少用,“[]”可以完全取代“()”,如: sjx(a|b|c)al和sjx[abc]zl就等价。
- “|”也可以用在在多个正则表达式之间。
三、通配
最常用的通配符包括正则表达式元字符,与正则表达式中的表示的意义不完全一致,如;
- “*”表示任意位的任意字符,可以是多个任意字符。
- “?”表示1个任意字符。
- “^”表示取反。
四、grep命令