关于grep的引号使用问题

单引号:

所见即所得:即将单引号中内容原样输出,也就是单引号''是全引用。

 

双引号: 

解析式输出:如果双引号的内容中有命令、变量等,会先把变量、命令解析成结果,再将结果输出。双引号""是部分引用。

  

单双引号:

 综上:常量用单引号''括起,而含有变量则用双引号""括起。单双可同时出现,单扩住双。

 

举例:

 

“”号里面遇到$,\等特殊字符会进行相应的变量替换

‘’号里面的所有字符都保持原样

对于字符串,两者相同

匹配模式也大致相同

但有一些区别非常容易混淆

 

grep "$a" file        #引用变量a,查找变量a的值

 

grep '$a' file        #查找“$a”字符串

 

grep "\\" file        #grep: Trailing backslash(不知原因)

 

grep '\\' file        #查找‘\’字符

 

1、$ 美元符

 

2、\ 反斜杠

 

3、` 反引号

 

4、" 双引号

这四个字符在双引号中是具有特殊含义的,其他都没有,而单引号使所有字符都失去特殊含义

 

如果用双引号,查找一个\,就应该用四个\:

grep "\\\\" file 这样就对了,这样等同于:

grep '\\' file

 

第一条命令shell把四个\,转义成2个\传递给grep,grep再把2个\转义成一个\查找

第二条命令shell没转义,直接把2个\传递给grep,grep再把2个\转义成一个\查找

其实grep执行的是相同的命令

 

posted @ 2017-12-18 10:23  yixue  阅读(4239)  评论(0编辑  收藏  举报