grep 關心 .dat 副檔名嗎?

grep 關心 .dat 副檔名嗎?

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

相關內容