Alternativa útil para el comando de archivo

0

Uso la siguiente sintaxis de shell (de mi pregunta anterior, respondida por - fenomenal) para verificar si el archivo es ASCII (texto) u otro

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

el problema es que obtengo "el archivo contiene caracteres que no son ascii" (de la sintaxis del script de shell) incluso si test_file es un archivo ASCII, ¿por qué?

También pruebo el archivo con el comando de archivo y esto es lo que obtengo

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

mi pregunta: ¿cómo cambiar la sintaxis de shell para admitir también "texto en inglés ASCII extendido no ISO"?

así que obtendré la impresión "el archivo contiene solo caracteres ascii" del script de shell

  remark the solution must be for Linux and solaris

gracias

jennifer
fuente
1
Esta es tu segunda publicación sobre este tema ( primero aquí ). Tal vez podría decir algunas palabras sobre por qué está tratando de lograr esto. Posiblemente hay un enfoque diferente que será más confiable.
dmckee
el segundo post es sobre diferentes isshu,
Jennifer
Corrígeme si me equivoco, pero todavía estás trabajando en el mismo problema subyacente, ¿verdad? No estoy afirmando que esto sea un duplicado, más bien estoy sugiriendo que con más contexto podríamos ser capaces de proporcionar una mejor ayuda.
dmckee
querido dmckee hola esta publicación es continuar con la primera publicación, la primera publicación desde mi punto está casi cerca, pero durante mi prueba noto un pequeño problema, por favor, mira en mi primera publicación muchas observaciones y si alguien quiere ayudar es muy difícil de entender lo que quiero, por lo tanto, pido la segunda publicación para aclarar esto ishu
jennifer

Respuestas:

0

Hola, usaría algo como:

#!/bin/bash
if [[ `file -b $1` == "ASCII text" ]] ; then
   echo "file contains ascii characters only"
   else
     echo "file contains non-ascii characters"
fi

Parece:

$ filetest.sh 1.txt  
file contains ascii characters only
$ filetest.sh PHOTOS/HPIM0532.jpg  
file contains non-ascii characters
Warnaud
fuente
¿Qué pasa con la opción Solaris -b no definida en Solaris? ¿Cuál es el mismo indicador en Solaris? (Trabajo en Linux y Solaris)
Jennifer
luego ponga: if [[ file $1 | cut -d : -f 2 | sed 's/ //'== "texto ASCII"]]; entonces
Warnaud
@Warnaud hola lo siento pero también obtengo: texto en inglés ASCII extendido no ISO, con líneas muy largas (utilicé la opción -b) mi objetivo para definir el archivo como ASCII también si obtengo la salida ASCII extendido no ISO Texto en inglés, con líneas muy largas
jennifer
por ejemplo: file -b file_test Texto en inglés ASCII no ISO extendido, con líneas muy largas
jennifer
por favor, de acuerdo con mi primera pregunta original, cómo cambiar la sintaxis de shell para admitir "Texto en inglés ASCII extendido no ISO"
Jennifer