grep заботится о расширении .dat?

grep заботится о расширении .dat?

GNU grep 2.6.3
Linux версия 2.6.32-220.el6.i686 (Red Hat 4.4.6-3)

У меня есть файл .dat, с которым grep не работает. Это обычный текст, который может быть прочитан всеми стандартными командами вывода, например, "less", "cat" и т. д., поэтому я знаю, что он содержит.

Если я выполняю grep по фразе, в наличии которой я точно знаю, то ничего не возвращается, как будто ничего не найдено.

Странность в том, что если я просто переименую его с другим расширением, например file.dat.txt, grep теперь будет работать нормально. Если я переименую его обратно в file.datgrep снова ничего не найдет.

Я также создал файл .dat просто командой echo:
echo "grep this" > test.dat
И все равно grep "grep" test.datничего не вернул.
Но после mv test.dat test.dat.txt, now grep "grep" test.dat.txtзаработало просто отлично.

Достаточно простое решение (переименовать файл), но мне показалось, что это странное поведение.

решение1

Это ненормальное поведение, и я не могу воспроизвести проблему на своих машинах Ubuntu или Centos.

Весьма вероятно, что GREP_OPTIONSв вашем bashrc (или bash_profile, profile и т. д.) установлено игнорирование *.dat.

Чтобы убедиться в этом, просто выведите переменную env:

 echo $GREP_OPTIONS

Где-то в выводе вы должны увидеть-exclude=*.dat

EDIT: Как предположил Фокс в комментариях, это также может быть псевдонимом, тогда он command -v grepдолжен отображаться -exclude=*.datгде-то в его выводе.

Связанный контент