shell正则

^   ^ab    【匹配a开头的字符】
    ^(ab)  【匹配ab开头的字符】
$   ab$    【匹配b结尾的字符;因为是结尾,所以$在后面】
    (ab)$  【匹配ab结尾的字符】
    \.$    【匹配点 . 结尾的字符】
ab*c       【匹配0个或多个b,如:abc、abbbc、ac】
ab+c       【匹配1个或多个b,如:abc、abbbc】
ab?c       【匹配0个或1个b,如:ac、abc】
ab.c       【匹配任意一个字符在b和c之间,如:absc、ab%c】
ab.*c      【匹配任意的字符数在b和c之间,如:abc、ab@【$@asfasc】

{n,m}
ab{0,1}c   【匹配0个或1个b   == ab?c】
ab{1,}c    【匹配1个或多个b   ==ab+c】
ab{0,}c    【匹配0个或多个b   ==ab*c】

\          【反斜杠,禁用后面的特殊字符,转换为普通字符,如:echo "\\"  结果 \】
^          【以某个字符或字符串开头 ^a、^(abc)、^[0-9]以数字开头】
$          【以某个字符或字符串结尾 a$、(ab)$、[0-9]$ 】
.          【代表任意一个字符 a.b:在a和b之间的任意一个字符】
a{7,8}     【匹配7个a或8个a】
^$         【匹配空行;因为直接^开头到$结尾,中间没有任何字符也即是空了】
^#         【匹配#开头的】
-v         【grep里取反匹配】
x|y        【匹配x或y,如:'(g|f)ood' 匹配good或food】
[a-z]      【匹配任意一个小写字母】
[^a-z]     【匹配任意一个非小写字】
^[a-z]     【匹配任意一个以小写字母开头的】
[abc]      【匹配a或b或c】
[a-zA-Z0-9]【匹配任意一个大小写字母和数字】
^[0-9]{3}  【匹配任意3个数字开头的】
[^0-9]     【匹配非数字】

在linux中,有通配符和正则表达式,这是两个不同的概念。
通配符:    它是由shell解析,并且一般用于匹配文件名。如:ls
正则表达式:是一个字符匹配标准,可以匹配文本中的内容,一些命令工具按此标准实现字符匹配,常用于支持正则表达式的工具,如grep,sed等等。一般用于匹配文件中的内容。

(1).常用的通配符如下:
*     匹配任意多个字符
?    匹配任意一个字符
[ ]   方括号,匹配方括号中出现的任意一个字符
[! ]  方括号中加感叹号,不匹配方括号中出现的任意一个字符

(2).常用的正则表达式如下:
字符匹配:
.   点,匹配任意单个字符  如:c.t  匹配c和t之间有一个字符的
*   匹配其前面一个字符出现的任意次数 ,如 c*  匹配文件中c字符出现的任意次
?  匹配其前面的字符1次或0次,如 c?  匹配文件中c字符只出现1次或0次
+   匹配其前面一个字符出现至少一次(在扩展正则表达式中)

(3).位置匹配:
^       锚定行首
$       锚定行尾
\<或\b  锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b  锚定词尾,其后面的任意字符必须作为单词尾部出现
\B      非单词的开头或结尾
^$      空白行
\       通常用于打开或关闭后续字符的特殊含义

(ab)*   匹配ab这个分组出现的任意次
\1      引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有\2,\3

(4).特殊子字符类:
[:alnum:]   任何字母和数字
[:alpha:]   任何字母
[:cntrl:]   控制字符,在ASCII表中对应八进制000到037,和177('DEL')
[:digit:]   任何数字
[:graph:]   匹配打印字符,相当于 '[:alnum:]' + '[:punct:]'
[:lower:]   小写字母
[:print:]   可打印字符,相当于 '[:alnum:]' , '[:punct:]' , 和space
[:punct:]   标点符号,' ! " $ % & ( ) * +,- / : ; <= > ? @ [ ] \ ^ _ { } | ~
[:space:]   空白字符,tab , newline, vertical tab , form feed , carriage return , and space
[:upper:]   大写字母   
[:xdigit:]  任何16进制的数字,相当于[0-9a-fA-F ]
如:cat 123 | grep [[:upper:]]【外层也要带上方括号】

你可能感兴趣的:(shell正则)