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