grep查找文件内容单双引号用法的区别

1、单引号:全引用。shell命令不做转义处理。

2、双引号:部分引用。shell命令会做转义处理。优先解析命令和变量。

3、不加引号:效果等同于双引号的作用,优先解析命令和变量。

需要转义的特殊字符:\,$等

1、查找特殊字符举例:

1.1、查找\字符

grep '\\' test.log  # 单引号全引用,shell不做转义处理;\\———shell——\\——grep——\——>查找 
# \\ shell不做转义处理传递给grep,grep做转义处理为\,拿去查找\字符
grep "\\\\" test.log # 双引号部分引用,shell做特殊字符的转义处理;\\\\———shell——\\——grep——\——>查找 
# \\\\ shell做转义处理为\\传递给grep,grep做转义处理为\,拿去查找\字符

1.2、查找$字符

grep '\$' test.log  # 单引号全引用,shell不做转义处理;
# \$ shell不做转义处理传递给grep,grep做转义处理为$,拿去查找$字符
grep "\\$" test.log # 双引号部分引用,shell做特殊字符的转义处理;
# \\$ shell做转义处理为\$传递给grep,grep做转义处理为$,拿去查找$字符

 

2、查找单双引号举例:

2.1、查找单引号'name'

grep "'name'" test.log
# 如果用单引号方式去查找,无论外面嵌套多少层单引号,都只能匹配出name,而不是'name'

2.2、查找双引号"age"

grep '"age"' test.log
# 如果用双引号方式去查找,无论外面嵌套多少层双引号,都只能匹配出age,而不是"age"

对于单双引号同时存在需要匹配的情况下,比较简单粗暴的处理方式就是用单引号方式查找,查找字符里的单双引号均用.(点号)去匹配。

grep '.name.' test.log
grep '.age.' test.log

 

posted @ 2021-03-02 13:05  DoubleFishes  阅读(5062)  评论(0编辑  收藏  举报