关于grep的引号使用问题
单引号:
所见即所得:即将单引号中内容原样输出,也就是单引号’'是全引用。
双引号:
解析式输出:如果双引号的内容中有命令、变量等,会先把变量、命令解析成结果,再将结果输出。双引号""是部分引用。
单双引号:
综上:常量用单引号’'括起,而含有变量则用双引号""括起。单双可同时出现,单扩住双。
举例:
“”号里面遇到$,\等特殊字符会进行相应的变量替换
‘’号里面的所有字符都保持原样
对于字符串,两者相同
匹配模式也大致相同
但有一些区别非常容易混淆
grep "KaTeX parse error: Expected 'EOF', got '#' at position 16: a" file #̲引用变量a,查找变量a的值 g…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执行的是相同的命令