通配符
*星号,匹配任何字符 ? 问号,匹配任意一个字符 []中括号,匹配括号中的一个字符 ls 会列出当前目录下所有文件,匹配了所有的文件名,而ls a*匹配所有a开头的文件。 需要注意的是,如果当前目录下有目录名匹配成功,会列出该目录下所有文件
*可以代替任意个数字符,?只能代替一个。
正则表达式
[:alnum:]:代表英文大小写字符及数字,即0-9,a-z,A-Z [:alpha:]:代表任何英文大小写字符,即a-z,A-Z [:blank:]:代表空格键与[Tab]按键 [:digit:]:代表数字,0-9 [:graph:]:除了空格符(空格键与[Tab]按键)外的其他所有按键 [:lower:]:代表小写字符,即a-z [:punct:]:代表标点符号(punctuation symbol),即”’?!;:#$ [:upper:]:代表大写字符,即A-Z [:space:]:任何会产生空白的字符,包括空格键[Tab]CR等
基础正则表达式
RE字符 | 意义 |
---|---|
^word | 待查找的字符串(word)在行首。 |
word$ | 待查找的字符串(word)在行尾。^$代表空行,^aa$只匹配aa |
. | 代表一定有一个任意字符的字符。 |
\ | 转义字符,将特殊符号的特殊意义去除。 |
* | 重复零个到无穷多个的前一个字符。 |
[list] | 从字符集合的RE字符里面找出想要选取的字符范围。 |
[n1-n2] | 从字符集合的RE字符里面找出想要选取的字符。 |
[^list] | 从字符集合的RE字符里面找出不要的字符串或范围。 |
{n,m} | 连续n到m个的前一个RE字符,若为{n}则是连续n个的前一个RE字符,若为{n,}则是连续n个及以上的前一个RE字符。 |
.:代表【一定有一个任意字符】;*:代表【重复前一个字符。0到无穷多次】;{}表示限定字符的范围,需要使用\转移,如'a{2,3}' 2到3个a,'a{2,}' 2个以上的a
正则表达式的特殊字符与一般在命令行输入的命令通配符不一样,如*,在通配符表示0~无穷多个字符,在正则表达式表示重复0~无穷前一个字符。
扩展正则表达式
+ | 重复一个或一个以上的前一个字符 |
---|---|
? | 零个或一个的前一个字符 |
| | or |
( ) | 找出群组字符串,'g(la|oo)d' |
( )+ | 多个重复群组 |
egrep等同于grep -E,grep不识别扩展的正则表达式,egrep或者grep -E才能识别。