当前位置: 代码迷 >> 综合 >> grep 使用括号表达式( [ ] )时之引号使用 小记
  详细解决方案

grep 使用括号表达式( [ ] )时之引号使用 小记

热度:48   发布时间:2024-01-16 01:33:45.0

 

前几天在使用grep命令时出现了让我疑惑的现象.

我尝试通过 [:alpha:] 关键字来搜索文件中的所有英文字母.

首先我们看下原文件:

[root@server ~]# cat test
Hello
insert something
good
bye
#!/binbash
123abckkk

 

现在看看命令输出:

[root@server ~]# grep [[:alpha:]] test
insert something

 

这明显不是期望输出, 于是我尝试加了对单引号:

[root@server ~]# grep '[[:alpha:]]' test
Hello
insert something
good
bye

#!/binbash
123abckkk

 

这次的输出是对了, 但是是什么原因导致错误的匹配是 t 呢?

网上搜寻一番无果后, 我最后在sof提问并得到了网友的解答.

 

[[:alpha:]] 如果没有使用引号将其引用, 在传递给 grep 命令之前 shell 会先去解释它

而这个括号表达式由 shell 来解释是在当前目录下寻找文件名为单字母的文件

随后我查看了一下目录, 果然有一个名为 t 的文件

 

所以在 grep 命令使用括号表达式时, 最稳妥的处理方式是用引号将其引用.

至于单引号还是双引号, 这个得根据搜索需求来确定了, CSDN 上应该也有不少相关的文章, 大家可以自行搜索.