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

 

前几天在使用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 上应该也有不少相关的文章, 大家可以自行搜索.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值