加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

grep中加单引号与不加引号的区别

发布时间:2020-12-14 01:17:25 所属栏目:百科 来源:网络整理
导读:今天写命令时本想查找最后带标点的句子,结果发现不带引号时无法识别 grep -n .$ exp: grep -n '.$' exp: 貌似不加单引号无法达到我们想要的效果,上网搜了一下,有人说是因为引号的作用,其实这在shell变量中就有介绍,明显的是,这里单引号起到了转义

今天写命令时本想查找最后带标点的句子,结果发现不带引号时无法识别

grep -n .$ exp:


grep -n '.$' exp:


貌似不加单引号无法达到我们想要的效果,上网搜了一下,有人说是因为引号的作用,其实这在shell变量中就有介绍,明显的是,这里单引号起到了转义的作用,并不像变量中提到的说双引号可转义,单引号保持原样,我在网上查了一下,看到有人在论坛上的回答,整理一下,事实是这样;

linux中的单引号和双引号的确对转义字符有不同的分别,但前提是系统的转义字符,例如:$,>,<等(系统保留字),Linux的系统保留字很多
而grep对单引号和双引号对grep一样,是因为设计时grep天生支持正则表达式,所以在grep看来,它的转义字符包括两部分,一部分就是系统保留字,另一部分就是正则表达式的转义字符,比如,^是正则表达式的转义字符,但由于他并非系统保留字,所以对它来讲,单引号和双引号都是一样的,但是不加引号就不起作用。但如果你要查找的信息中包含$,例如:"$boy"和'$boy‘'那可就不一样,
因此,对于系统保留字,grep依然满足不同引号的不同用法,但是对正则表达式的转义字符,则对引号不敏感,因此这告诉我们,以后将系统保留字与正则表达式混用时,正则表达式尽量按照规则来写

还是回到问题本身,如果搜索内容中有空格,则需要使用单引号或者双引号把搜素内容引起来!

笔者一般在使用grep时都老老实实的多输入两个单引号。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读