发布网友 发布时间:2022-04-24 01:32
共1个回答
热心网友 时间:2023-10-18 19:32
这个问题涉及到shell是如何工作的,加不加引号区别是非常大的
1.加双引号
grep "\<the\>" fileshell的工作流程如下:
a.执行grep命令,引号内为其正则表达式,file为grep需要处理的文件。
b.\<the\>的作为正则表达式的内容被grep进行处理
c.返回匹配到的结果——匹配file文件中包含the并且是一个单词(the的左右两边必须是符号或空格)的行。
2.不加双引号
grep \<the\> filea.shell执行grep命令,没有引号,故表达式\<the\>需要被shell解释,file为grep需要处理的文件。
b.shell处理\<the\>,<>分别被\转义保留了其本身的字面意思,所以处理后的表达式返回为<the>。
c.表达式<the>作为正则表达式的内容被grep进行处理
d.返回匹配到的结果——匹配包含字符串<the>的行。
所以要想不加引号实现想要的结果,需要改成下面的形式:
grep \\\<the\\\> file但不建议这么做,加双引号或单引号是一种规范。
热心网友 时间:2023-10-18 19:32
这个问题涉及到shell是如何工作的,加不加引号区别是非常大的
1.加双引号
grep "\<the\>" fileshell的工作流程如下:
a.执行grep命令,引号内为其正则表达式,file为grep需要处理的文件。
b.\<the\>的作为正则表达式的内容被grep进行处理
c.返回匹配到的结果——匹配file文件中包含the并且是一个单词(the的左右两边必须是符号或空格)的行。
2.不加双引号
grep \<the\> filea.shell执行grep命令,没有引号,故表达式\<the\>需要被shell解释,file为grep需要处理的文件。
b.shell处理\<the\>,<>分别被\转义保留了其本身的字面意思,所以处理后的表达式返回为<the>。
c.表达式<the>作为正则表达式的内容被grep进行处理
d.返回匹配到的结果——匹配包含字符串<the>的行。
所以要想不加引号实现想要的结果,需要改成下面的形式:
grep \\\<the\\\> file但不建议这么做,加双引号或单引号是一种规范。