grep은 .dat 확장자를 신경쓰나요?

grep은 .dat 확장자를 신경쓰나요?

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

grep을 실행할 수 없는 .dat 파일이 있습니다. 이는 일반 텍스트이고 "less", "cat" 등과 같은 모든 표준 출력 명령으로 읽을 수 있으므로 내용이 무엇인지 알 수 있습니다.

내가 확실히 알고 있는 문구를 검색하면 반환되지 않고 아무것도 찾지 못한 것과 같습니다.

이상한 점은 다른 확장명으로 이름을 바꾸면 file.dat.txt이제 grep이 제대로 작동한다는 것입니다. 이름을 다시 바꾸면 file.datgrep은 아무것도 찾지 못할 것입니다.

또한 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_OPTIONSbashrc(또는 bash_profile, profile 등)가 *.dat를 무시하도록 설정되어 있을 가능성이 높습니다.

이를 확인하려면 환경 변수를 인쇄하십시오.

 echo $GREP_OPTIONS

출력 어딘가에 표시되어야 합니다.-exclude=*.dat

편집: Fox가 의견에서 제안한 것처럼 별칭일 수도 있으며 출력 어딘가에 command -v grep표시되어야 합니다.-exclude=*.dat

관련 정보