
파일이 ASCII(텍스트)인지 또는 기타인지 확인하기 위해 다음 쉘 구문(이전 질문에서 - phemient의 답변)을 사용합니다.
if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
echo "file contains non-ascii characters"
else
echo "file contains ascii characters only"
fi
문제는 test_file이 ASCII 파일인 경우에도 "파일에 ASCII가 아닌 문자가 포함되어 있습니다"(쉘 스크립트 구문에서)라는 메시지가 표시된다는 것입니다. 이유는 무엇입니까?
또한 file 명령을 사용하여 파일을 테스트했는데 이것이 내가 얻은 것입니다.
file test_file
Non-ISO extended-ASCII English text" its also ASCII file
내 질문: "비ISO 확장 ASCII 영어 텍스트"도 지원하기 위해 쉘 구문을 변경하는 방법은 무엇입니까?
그래서 쉘 스크립트에서 "파일에 ASCII 문자만 포함되어 있습니다"라는 인쇄가 표시됩니다.
remark the solution must be for Linux and solaris
고마워
답변1
안녕하세요. 다음과 같은 것을 사용하겠습니다.
#!/bin/bash
if [[ `file -b $1` == "ASCII text" ]] ; then
echo "file contains ascii characters only"
else
echo "file contains non-ascii characters"
fi
다음과 같습니다:
$ filetest.sh 1.txt
file contains ascii characters only
$ filetest.sh PHOTOS/HPIM0532.jpg
file contains non-ascii characters