grep 转义字符“\” 查找

grep 转义字符“\” 查找,因为“\”grep 命令里是转义字符,所以需要特殊的处理,

比如要查找#include "..\..\mydir\test.h" 中的"\"

grep "\\\\" test file  其中,前两个“\\” --->\转义本身“\”,后面两个"\\"才是要查找的“\”;

或者

grep \\\\ test file  其中,前两个“\\” --->\转义本身“\”,后面两个"\\"才是要查找的“\”;

或者

grep '\\' test file,其中,前一个是转义符号,后面一个是查找的“\”

 测试查找$:

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的是\\

其他特殊字符的转义

1、Tab匹配

    $'\t'

2、空格

   转义符+空格

3、括号

  转义符+括号

4、精确匹配

    \<匹配内容\>(以**开头,以**结尾)

 

转义的说明:

 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决定的。
 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值