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执行的是相同的命令

参考: http://www.zsythink.net/archives/1977

https://blog.csdn.net/cupidove/article/details/8783968

正则表达式 用于字符串处理,表 验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新,请持续关注本站。 匹配 文字符的 正则表达式 : [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用 :计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 匹配空行的 正则表达式 :\n[\s| ]*\r 匹配HTML标记的正则表达 1        概述这或许会是一个让人迷惑,甚至感到混乱的话题,但也正因为如此,才有了讨论的必要。在正则 ,一些具有特殊意义的字符,或是字符序列,被称作元字符,如“?”表示被修饰的子表达式匹配0次或1次,“(?i)”表示忽略大小写的匹配模式等等。而当这些元字符被要求匹配其本身时,就要进行 转义 处理了。不同的语言或 应用 场景下,正则定义方式、元字符出现的位置不同, 转义 的方式也是林林总总 貌似不加 引号无法达到我们想要的效果,上网搜了一下,有人说是因为引号的作用,其实这在shell变量 就有介绍,明显的是,这里 引号起到了 转义 的作用,并不像变量 提到的说 双引号 转义 引号保持原样,我在网上查了一下,事实是这样; shell 引号和 双引号 在shell ,如果需要定义或引用变量通常需要使用 双引号 ,如果希望不解析变量,直接原样输出内容可以使用 引号。 因为 双引号 首先会先解析变量的内容,而 引号包裹的内容表示原样输出。 #!/bin/bash url="https://www.baidu.com/" website01='百度网站地址:$url' website02="百度网站地址:$url" echo $website01 echo $website02 百度网站地址:$url 百度网站地址 大家好,我是欧阳方超。 引号和 双引号 都是用于变量值 有空格的情况下,但是他们也有 区别 引号内的内容将原样输出; 双引号 的作用也是将引号里面的内容输出,但是,如果引号内有命令、变量等,会先对命令进行执行并得到结果、变量解析并得到结果,然后把结果输出。下面看下详情。 2、 双引号 2.1 共同之处 当变量值 出现空格时,需要用引号括起来, 双引号 均可,如下: [xiaoliu@hadoopslave1