
ファイルが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
THX
答え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