Alternativa utile per il comando file


0

Uso la seguente sintassi della shell (dalla mia precedente domanda, con risposta di - phemient) per verificare se il file è ASCII (testo) o altro

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

il problema è che ottengo "il file contiene caratteri non ASCII" (dalla sintassi dello script di shell) anche se il file test_file è il file ASCII perché?

Ho anche testare il file con il comando file e questo è quello che ottengo

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

la mia domanda: come modificare la sintassi della shell per supportare anche "testo in inglese ASCII esteso non ISO"?

quindi otterrò la stampa "il file contiene solo caratteri ASCII" dallo script della shell

  remark the solution must be for Linux and solaris

grazie


1
Questo è il tuo secondo post su questo argomento ( prima qui ). Forse potresti dire alcune parole sul perché stai cercando di ottenere questo risultato. Forse esiste un approccio diverso che sarà più affidabile.
dmckee,

il secondo post parla di isshu diverso,
jennifer

Correggimi se sbaglio, ma stai ancora lavorando allo stesso problema di fondo, giusto? Non sto affermando che questo è un duplicato, piuttosto sto suggerendo che con più contesto potremmo essere in grado di fornire un aiuto migliore.
dmckee,

caro dmckee ciao questo post è continuare il primo post, il primo post dal mio punto è quasi vicino ma durante il mio test noto un piccolo problema, per favore dai un'occhiata al mio primo post molte molte osservazioni e se qualcuno vuole aiutare il suo stesso difficile capire cosa voglio, quindi chiedo al secondo post di cancellare questo ishu
jennifer,

Risposte:


0

Ciao userei qualcosa del tipo:

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

Sembra:

$ filetest.sh 1.txt  
file contains ascii characters only
$ filetest.sh PHOTOS/HPIM0532.jpg  
file contains non-ascii characters

che dire dell'opzione Solaris -b non definita in Solaris - che lo stesso flag in Solaris? (lavoro su Linux e Solaris)
jennifer,

quindi inserisci: if [[ file $1 | cut -d : -f 2 | sed 's/ //'== "ASCII text"]]; poi
Warnaud,

@Warnaud ciao scusa ma ottengo anche: testo in inglese ASCII esteso non ISO, con righe molto lunghe (ho usato l'opzione -b) il mio obiettivo per definire il file come ASCII anche se ottengo l'output ASCII esteso non ISO Testo in inglese, con righe molto lunghe
jennifer,

ad esempio: file -b file_test Testo in inglese ASCII esteso non ISO, con righe molto lunghe
jennifer,

per favore, secondo la mia prima domanda originale, come modificare la sintassi della shell per supportare "Testo in inglese ASCII esteso non ISO"
jennifer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.