
GNU grep 2.6.3
Linux バージョン 2.6.32-220.el6.i686 (Red Hat 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 を無視するように設定されている可能性が非常に高くなります。
これを確認するには、env 変数を印刷するだけです。
echo $GREP_OPTIONS
出力のどこかに-exclude=*.dat
編集: コメントでFoxが示唆したように、これはエイリアスである可能性もあり、その場合は出力のどこかにcommand -v grep
表示されるはずです。-exclude=*.dat