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
在其输出中的某个位置