shell中 单引号、双引号、无引号、反斜杠在grep命令中的二次转义_BlockLabour的博客-CSDN博客_shell grep 转义


本站和网页 https://blog.csdn.net/weixin_36732479/article/details/76890337 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

shell中 单引号、双引号、无引号、反斜杠在grep命令中的二次转义_BlockLabour的博客-CSDN博客_shell grep 转义
shell中 单引号、双引号、无引号、反斜杠在grep命令中的二次转义
BlockLabour
于 2017-08-08 11:55:05 发布
27993
收藏
分类专栏:
shell
文章标签:
运维
shell脚本
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36732479/article/details/76890337
版权
shell
专栏收录该内容
1 篇文章
0 订阅
订阅专栏
对于shell的转义的问题,查看了好多文章都是针对于转义本身用法的,却没有说明在命令中的用法问题,实际上我们在使用转义时大多是在grep等各种命令之中,博主特意进行了一些研究实验,针对多层转义的问题得出了一些有用的结论,有兴趣的小伙伴可以一起来探讨。
首先对转义进行一个简单说明:
 meta是元语言的意思,即当前命令作用域下的特殊含义字符,包括空格,$,',",\等等,主要是区分为命令meta和shellmeta,而且在不同的命令作用域下meta是不同的。
针对shell命令行作用域下:
无引号将先处理所有shell的meta。
单引号为硬转义,shell的meta在内部应无效。
双引号为软转义,大部分shellmeta无效,但$,\,`不会失效。
下面先给出博主试验后得出的结论:
多层转义原理:在命令中使用引号例如grep时,它的转义有两层,一层是shell本身的mate,这一层可以用echo命令测试输出,经过这一层转义之后的结果会进入grep命令,并在grep中进行第二层的转义,例如当grep利用双引号查找$时要将转义字符作为第二层转义的输入送到grep中,grep实际输入的应该是\$,这样才能查找到文件中的$字符,对于grep来说他的meta我暂时只发现了$和\,$对于grep来说有进行变量转换的内部功能,\在grep内还是转义功能,而"和'并不是grep的meta,因此不需要二层转义,是否需要二层转义应该是根据不同命令的meta决定的。
下面是博主的测试例子:
首先创建一个测试文件
vim   test.sh
                        "$'home'$"\                         dqwd\                         dfvfwf
 测试查找$:
grep '\$' test.sh         实际传入grep的是\$
grep "\\$" test.sh       实际传入grep的是\$
grep \\$ test.sh         实际传入grep的是\$
查找"有效: 
grep '"' test.sh         实际传入grep的是"
grep '\"' test.sh        实际传入grep的是\"
grep "\"" test.sh      实际传入grep的是"
查找\有效:
grep "\\\\" test.sh     实际传入grep的是\\  
grep '\\' test.sh         实际传入grep的是\\
查找'有效:
grep "'" test.sh
只有这一个是有效的,而grep "\'" test.sh无效,echo "\'" 会输出\'(这个原因暂时未找到),根据我的多层转义理论'对grep来说不是meta,因此传入grep中必须是单独'才有效,而grep ''' test.sh无效是因为单引号内的单引号是无法转义的,因为单引号在优先级上来说是最高且总是就近匹配的,优先级应该是''>\>""这样的。
因此如果想要查找内部含有单引号的字符换必须使用双引号,例如查找'$"\必须使用 grep "'\\$\"\\\\" test.sh
         
BlockLabour
关注
关注
点赞
收藏
打赏
评论
shell中 单引号、双引号、无引号、反斜杠在grep命令中的二次转义
对于shell的转义的问题,查看了好多文章都是针对于转义本身用法的,却没有说明在命令中的用法问题,实际上我们在使用转义时大多是在grep等各种命令之中,博主特意进行了一些研究实验,针对多层转义的问题得出了一些有用的结论,有兴趣的小伙伴可以一起来探讨。首先对转义进行一个简单说明: meta是元语言的意思,即当前命令作用域下的特殊含义字符,包括空格,$,',",\等等,主要是区分为命令meta
复制链接
扫一扫
专栏目录
awk引用shell变量
lepton126的专栏
10-23
251
在awk中引用shell变量的方法,本例中引用shell变量keyword,在keywrodr的外侧是双引号,在keyword内侧是单引号
#cat ./test.txt
aabbccddeeffgghh112233/usr/bin/umount
#keyword="mount"
cat ./test.txt|grep $keyword|awk '{split($0,a,"/");if(a[4]=="'$keyword'")print a[1],a[4]}'
格式是这样的,双引号 单引号 $ke..
Linux之grep查找文本时匹配反斜杠\转义问题
最新发布
专注自动化、性能测试、测试架构学习交流
10-25
440
Linux之grep查找文本时匹配反斜杠\转义问题
评论 1
您还未登录,请先
登录
后发表或查看评论
linux grep 转义字符,【小白求助】grep命令双引号和转义问题
weixin_29292431的博客
05-12
623
该楼层疑似违规已被系统折叠隐藏此楼查看此楼你想转义成什么?2.2.1 Escape Character (Backslash)A that is not quoted shall preserve the literal value of the following character, with the exception of a . If a follows the , the she...
linux中gnu转义元字符,grep 正则表达式用引号括起来和元字符加反斜杠转义的测试...
weixin_32757449的博客
05-12
51
grep 正则表达式用引号括起来和元字符加反斜杠转义的测试实验在 grep 命令中的表达式:不加引号,加单引号,加双引号的区别,以及部分元字符前加与不加 `\’ 进行转义的区别。实验环境为“实验楼(http://www.shiyanlou.com/)上的 CentOS 6 ,GNU grep 2.6.3。1、测试不把 grep 的表达式加上引号:[root@d9a69d7b11ac test]#m...
linux 脚本双引号转义,在一个shell脚本中的变量中转义双引号
weixin_36425412的博客
05-07
2056
希望是一个简单的问题和我拼图中的最后一块... :-)我有一个shell脚本在os下运行在终端中。它包含了除其他事项外:在一个shell脚本中的变量中转义双引号name=$(basename "$file")printf "%s" "\"$name\";"...这是很好的......但可以说的是,文件名中包含一个双引号 - IMA“G09%'27 .JPG - 那么输出将是:“IMA”G09%'2...
shell 引号 转义符 通配符 特殊字符
zhoulixin8的专栏
11-30
3万+
下面内容解释hive -e "" 中为什么用四个反斜杠,而hive-CMD中只用两个反斜杠
hive -e "select split('1.2.3.4','\\\\.') from default.dual;"
hive> select split('1.2.3.4','\\.') from default.dual;
上面两种情况执行结果一样
需要注意的是:
26、shell编程—grep语法、以及grep转义字符
LiuWei
06-17
585
文章目录1.grep 和 find的区别2.grep用法3.egrep 和 grep区别
1.grep 和 find的区别
grep时查找文件内容
find是查找文件的
2.grep用法
第一种形式:grep [option] [pattern] [file1,file2...]
第二种形式:command | grep [option] [pattern]
参数
含义
-v
显示不匹配pattern的行
-i
搜索时忽略大小写
-n
显示行号
-E
支持扩展的正则表达式
linux脚本里双引号,shell脚本中grep时关于变量带双引号的小问题
weixin_39925031的博客
05-06
731
今天在写一个shell脚本的时候,有一个操作是使用grep命令在一个文件中搜索指定内容。指定内容存放在文件中,使用一个变量去获取文件中内容,再传到grep命令中去。这段代码如下:for target in `cat content.txt`dogrep $target test.txt >>result.txtdonecontent.txt文本中的内容为:"域\[2\]""域\[3\]...
linux grep命令要查找的内容有双引号
qq_30908729的博客
08-06
1462
有时候使用grep要查找的内容包含双引号,以下写法是错误的:
Linux拓展之使用grep搜索时的特殊转义符号
二木成林
06-15
3444
所以对于一些特殊字符,需要进行转义,用符号 `\` 来对别的字符进行转义。
grep 后加单引号、双引号和不加引号的区别
java开发指南博客 【转载】
05-06
114
环境:VirtualBox4.1 + RedHat Linux 6 + Putty0.62
单引号:
可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换。
双引号:
把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内...
grep 正则表达式用引号括起来和元字符加反斜杠转义的测试
angren9282的博客
03-27
94
grep 正则表达式用引号括起来和元字符加反斜杠转义的测试
实验在 grep 命令中的表达式:不加引号,加单引号,加双引号的区别,以及部分元字符前加与不加 `\’ 进行转义的区别。实验环境为“实验楼(http://www.shiyanlou.com/)上的 CentOS 6 ,GNU grep 2.6.3。
1、测试不把 grep 的表达式加上引号:
[root@d...
关于linux下使用grep和egrep中单引号‘’、双引号“”、小括号()和大括号{}的一些问题
FS's Home
11-21
2万+
最近在linux下使用grep和egrep发现了一些问题。以前一直以为egrep包含了grep,因此grep中采用的格式,在egrep中能得到相同的结果。其实这个想法是不对的。
shell脚本中grep时关于变量带双引号的小问题
weixin_34174132的博客
02-15
1639
今天在写一个shell脚本的时候,有一个操作是使用grep命令在一个文件中搜索指定内容。指定内容存放在文件中,使用一个变量去获取文件中内容,再传到grep命令中去。这段代码如下:for target in `cat content.txt`do grep $targettest.txt >>result.txtdonecontent.t...
[Linux] grep查找文本时反斜杠\转义问题
小红帽
01-27
4037
当文本中有反斜杠 , 需要使用grep查找出带有反斜杠的内容 , 比如下面的文本
bbbaaaeeccc\tdd
想要查找出ccc\t这行的文本
如果你使用 cat xxx.txt |grep "ccc\t" 或者 cat xxx.txt |grep "ccc\\t" 加一个转义, 是查不出来的
需要增加至少三个反斜杠才可以 , 比如这样
cat /tmp/test.t...
[Linux]grep匹配反斜杠
Balmunc的专栏
04-14
362
匹配一个反斜杠:
cat 13.log | grep "\\\\"
linux正则查找时间,linux grep + 基础正则表达式
weixin_29357243的博客
05-01
360
. 句点表示任何单个字符[] 方括号包括一个字符序列- 短横线在字符之间使用以创建一个序列(在 [] 内)^ 脱字符用于对序列(在 [] 内)取反* 星号搜索某个搜索项的零个、一个或多个实例? 问号搜索某个搜索项的零个或一个实例+ 加号搜索某个搜索项的一个或多个实例$ 美元符号搜索行尾^ 脱字符搜索行首\ 特殊字符前的反斜杠使该字符成为普通字符\< 从匹...
Grep命令查找多个字符串(grep同时匹配多个关键字或任意关键字)
热门推荐
专注自动化、性能测试、测试架构学习交流
05-08
5万+
前言
grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl-compatible 。当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。
要搜索多个匹配模式,可以使用 OR ( alternation ) 运算符。我们可以用 OR 运算符 |( pipe )指定不同的匹配项,这些匹配项可以是文本字符串,也可以是表达式集。值得注意的是,在所有正则表达式运算符中,这个运算符的优先级是最低的。
使用 grep 命令基本正则表达式搜索多个匹配模式的语法如下:
grep的语法和用法
tianmo2010的专栏
11-14
7969
grep命令的格式:
grep [options] PATTERN [FILE]
其中:
1,pattern是用正则表达式书写的模式。
2,FILE是要查找的文件,可以是用空格间隔的多个文件,省略FILE时表示在标准输入中查找
常用参数:
-E :采用规则表示式去解释样式。
-c:只显示匹配行的次数。
-i:搜索时不区分大小写。
-n:输出匹配行的行号。
-v:输出不
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:编程工作室
设计师:CSDN官方博客
返回首页
BlockLabour
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
原创
122万+
周排名
154万+
总排名
2万+
访问
等级
113
积分
粉丝
获赞
评论
收藏
私信
关注
热门文章
shell中 单引号、双引号、无引号、反斜杠在grep命令中的二次转义
27993
分类专栏
shell
1篇
最新评论
shell中 单引号、双引号、无引号、反斜杠在grep命令中的二次转义
裂缘冰释:
有的地方说的云里雾里的,有的地方有错,中间调过,然后看到最后说:例如查找'$"\必须使用 grep "'\\$\"\\\\" test.sh
然而根本不对,是这个: grep -n "'$\"" hello.text
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
2017年1篇
目录
目录
分类专栏
shell
1篇
目录
评论 1
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
BlockLabour
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值