
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.txt
Das 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.dat
wurde nichts zurückgegeben.
Aber danach hat es mv test.dat test.dat.txt
jetzt grep "grep" test.dat.txt
einwandfrei 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_OPTIONS
in 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 grep
sollte es -exclude=*.dat
irgendwo in der Ausgabe erscheinen