当grep不可靠时

时间:2019-06-07 19:42:54

标签: bash grep ls head

我发现一种非常奇怪的情况,当从一个特定目录中运行时,grep无法按预期工作。

在查看一些存档数据时,我发现grep在第一级和第三级目录中工作正常,而在第二级目录中却行不通。

[root@Server ANM]# ls data/atg/|head -n5
2017-01-04-07:31
2017-01-04-08:01
2017-01-04-08:31
2017-01-04-09:01
2017-01-04-09:31
[root@Server ANM]# ls data/atg/|head -n5|grep 201[1-8]
2017-01-04-07:31
2017-01-04-08:01
2017-01-04-08:31
2017-01-04-09:01
2017-01-04-09:31
[root@Server ANM]# cd data
[root@Server data]# ls atg/|head -n5|grep 201[1-8]
[root@Server data]# ls atg/|head -n5|grep 201
2017-01-04-07:31
2017-01-04-08:01
2017-01-04-08:31
2017-01-04-09:01
2017-01-04-09:31
[root@Server data]# ls atg/|head -n5|\grep 201[1-8]
[root@Server data]# ls atg/|head -n5|/bin/grep 201[1-8]
[root@Server data]# ls atg/|head -n5|grep "201[1-8]"
2017-01-04-07:31
2017-01-04-08:01
2017-01-04-08:31
2017-01-04-09:01
2017-01-04-09:31
[root@Server data]# cd atg
[root@Server atg]# ls | head -n5 | grep 201[1-8]
2017-01-04-07:31
2017-01-04-08:01
2017-01-04-08:31
2017-01-04-09:01
2017-01-04-09:31

请注意,grep在ANM /目录中可以正常工作,在ANM / data中时会失败,并且在ANM / data / atg目录中也可以正常工作。

使用/ bin / grep不能解决问题,也不能删除剥离别名。唯一有效的方法是引用正则表达式。

我通常不对grep使用引号,但我认为应该开始。

因为找到了解决方法,所以没有为此寻求帮助。

这些目录很快就会被归档到磁带上,我希望问题会消失。如果有人有想法要检查,请发表评论。

目录中大约有1000个条目,所以我看不到管道出现故障。

我确实注意到,通过 set -x ,外壳程序报告命令的方式有所不同。

这是失败的时候

+ grep 2017 2018

这是可行的

+ grep '201[1-8]'

同一命令,不同目录。

0 个答案:

没有答案