单引号:
单引号将它中间的所有任意字符还原为字面意义,实现屏蔽shell元字符的功能,单引号必须成对出现
双引号:
双引号类似于单引号,但不会屏蔽` \ $ 这三个shell元字符的含义,如果需要屏蔽需要前面加一个\符号,其他字符的功能将被屏蔽(包括单引号),两个双引号之间的单引号不必成对出现
1、当pattern或者说匹配模式中,没有空格,可以不用引号,但是有空格一定要用引号。
2、考虑单引号和双引号的区别,考虑pattern是否有变量,是否需要求值
在正则表达式中,\有特殊的用法,$在末尾也有特殊的用法,单引号和双引号的区别仅在于双引号会对`` 进行命令解析,对$进行变量替换,而在正则表达式中一般不会出现这两种用法,所以正则表达式中通常使用单引号即可。
----------------------------------------------------------------------------------------------------------------
通配符与正则表达式的区别:
通配符:shell命令行或者shell脚本中,在shell命令中匹配文件名
正则表达式:在文件中匹配字符串
ls find cp 不支持 正则表达式(和文件名相关);grep awk sed支持正则表达式(和文本中的字符串相关)
-----------------------------------------------------------------------------------------------------------------
通配符
* 匹配0到多个任意字符
?匹配任意单个字符
[]匹配括号内的一个字符
[!]匹配不在括号内的一个字符
----------------------------------------------------------------------------
基本正则表达式(BRE):grep
最好用单引号或双引号括起来,单引号即可
.表示任意单个字符
[0-9]表示一个数字
[a-zA-Z]表示一个字母
*表示匹配前面那个单字符0次或多次
.*匹配任意多个任意字符
\+匹配前面那个单字符至少1次
\?匹配前面那个单字符0次或1次
+匹配+
^匹配行首
$匹配行尾
[^]匹配不在括号内的一个字符
\匹配转义后的特殊字符
\{n,m\}匹配前面的字符至少n次最多m次(n,m至少需要有一个\{n\},\{n,\},\{n,m\},\{,m\})
\(\)将\(与\)之间的内容存储在“保留空间”,最大存储9个分组
\n通过\1至\9调用保留空间中的内容,一般和上面的\(\)配合使用
-------------------------------------------------------------------------------------------------------------------
扩展正则表达式(ERE):
egrep; grep -E;awk
+匹配前面那个单字符至少1次(在扩展正则表达式中)
\+匹配+
{n,m}等同于基本正则表达式的\{n,m\}
?匹配前面那个单字符0次或1次
|匹配逻辑或者,即匹配|前或后的字串
()匹配分组