grep 关心 .dat 扩展名吗?

grep 关心 .dat 扩展名吗?

GNU grep 2.6.3
Linux 版本 2.6.32-220.el6.i686(红帽 4.4.6-3)

我有一个 grep 无法运行的 .dat 文件。它是纯文本,可以被所有标准输出命令读取,例如“less”、“cat”等,所以我知道它包含什么。

如果我 grep 一个我绝对知道的短语,它不会返回,就好像它什么也没找到一样。

奇怪的是,如果我只是用不同的扩展名重命名它,比如file.dat.txt,现在 grep 就可以正常工作了。如果我将其重命名回file.dat,grep 将再次找不到任何内容。

我还简单地使用 echo 命令创建了一个 .dat 文件:
echo "grep this" > test.dat
但仍然grep "grep" test.dat没有返回任何内容。
但之后mv test.dat test.dat.txt,现在grep "grep" test.dat.txt工作得很好。

足够简单的解决方法(重命名文件),但只是认为这是奇怪的行为。

答案1

这不是正常行为,我无法在我的 ubuntu 或 centos 机器上重现该问题。

GREP_OPTIONS您的 bashrc(或 bash_profile、profile 等)中很可能设置为忽略 *.dat。

要验证这一点,只需打印环境变量:

 echo $GREP_OPTIONS

您应该在输出中的某个位置看到-exclude=*.dat

编辑:正如 Fox 在评论中所建议的,它也可能是一个别名,然后command -v grep应该显示-exclude=*.dat在其输出中的某个位置

相关内容