grep kümmert sich um die Erweiterung .dat?

grep kümmert sich um die Erweiterung .dat?

GNU grep 2.6.3
Linux Version 2.6.32-220.el6.i686 (Red Hat 4.4.6-3)

Ich habe eine .dat-Datei, mit der grep nicht funktioniert. Es ist einfacher Text und kann von allen Standardausgabebefehlen gelesen werden, z. B. „less“, „cat“ usw., also weiß ich, was sie enthält.

Wenn ich eine Phrase greppe, von der ich mit absoluter Sicherheit weiß, dass sie darin enthalten ist, wird sie nicht zurückgegeben, als ob nichts gefunden worden wäre.

file.dat.txtDas Merkwürdige ist , dass grep einwandfrei funktioniert, wenn ich es einfach mit einer anderen Erweiterung umbenenne, z. B. . Wenn ich es wieder in umbenenne file.dat, findet grep erneut nichts.

Ich habe auch einfach mit dem Echo-Befehl eine DAT-Datei erstellt:
echo "grep this" > test.dat
Und trotzdem grep "grep" test.datwurde nichts zurückgegeben.
Aber danach hat es mv test.dat test.dat.txtjetzt grep "grep" test.dat.txteinwandfrei funktioniert.

Der Workaround war recht einfach (Datei umbenennen), aber ich dachte einfach, dass dies ein merkwürdiges Verhalten sei.

Antwort1

Das ist kein normales Verhalten und ich kann das Problem weder auf meinen Ubuntu- noch auf meinen CentOS-Rechnern reproduzieren.

Es ist sehr wahrscheinlich, dass GREP_OPTIONSin Ihrer Bashrc (oder Bash_Profil, Profil usw.) eingestellt ist, *.dat zu ignorieren.

Um dies zu überprüfen, drucken Sie einfach die Umgebungsvariable aus:

 echo $GREP_OPTIONS

Irgendwo in der Ausgabe sollten Sie sehen-exclude=*.dat

EDIT: Wie von Fox in den Kommentaren vorgeschlagen, könnte es auch ein Alias ​​sein, dann command -v grepsollte es -exclude=*.datirgendwo in der Ausgabe erscheinen

verwandte Informationen