Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I use the following shell syntax (from my previos questione, answered by - phemient) in order to verify if file is ASCII (text) or other

if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
   echo "file contains non-ascii characters"
     echo "file contains ascii characters only"

the problem is that I get "file contains non-ascii characters" (from the shell script syntax) even if the test_file is ASCII file why?

I also test the file with file command and this is what I get

file test_file 
Non-ISO extended-ASCII English text" its also ASCII file 

my question: how to change the shell syntax in order to support also "Non-ISO extended-ASCII English text" ?

so I will get the print "file contains ascii characters only" from the shell script

  remark the solution must be for Linux and solaris


share|improve this question
This is your second post on this topic ( first here ). Maybe you could say a few words about why you're trying to accomplish this. Possibly there is a different approach which will be more reliable. – dmckee Oct 27 '10 at 16:00
the second post is about diffrent isshu , – jennifer Oct 27 '10 at 20:23
Correct me if I'm wrong, but you're still working on the same underlying problem, right? I'm not claiming this is a duplicate, rather I'm suggesting that with more context we might be able to provide better help. – dmckee Oct 27 '10 at 20:38
dear dmckee hi this post is continue the first post , the first post from my point is almost close but during my test I notice about little problem , please take a look on my first post many many remarks and if some one want to help its very difficult to understand what I want , therefore I ask the second post to clear this ishu – jennifer Oct 27 '10 at 21:07

Hi I would use something like:

if [[ `file -b $1` == "ASCII text" ]] ; then
   echo "file contains ascii characters only"
     echo "file contains non-ascii characters"

Looks like:

$ 1.txt  
file contains ascii characters only
$ PHOTOS/HPIM0532.jpg  
file contains non-ascii characters
share|improve this answer
what about Solaris -b option not defined in Solaris - what the same flag in Solaris? (i work on Linux and Solaris) – jennifer Oct 27 '10 at 12:10
then put: if [[ file $1 | cut -d : -f 2 | sed 's/ //' == "ASCII text" ]] ; then – Warnaud Oct 27 '10 at 12:53
@Warnaud hi sorry but I get also: Non-ISO extended-ASCII English text, with very long lines (I used the -b option) my target to define the file as ASCII also if I get the output Non-ISO extended-ASCII English text, with very long lines – jennifer Oct 27 '10 at 13:06
for example: file -b file_test Non-ISO extended-ASCII English text, with very long lines – jennifer Oct 27 '10 at 13:08
please advice according to my first original question how to change the shell syntax in order to support "Non-ISO extended-ASCII English text" – jennifer Oct 27 '10 at 13:10

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.