Les solutions proposées ici n'ont pas fonctionné pour moi. Peut-être que mon problème était différent, mais j'avais besoin de supprimer les couleurs ASCII et les autres caractères du texte ASCII autrement pur.
Ce qui suit a fonctionné pour moi, cependant :
Suppression des codes d'échappement du texte ASCII
sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g'
En contexte (BASH) :
$ printf "\e[32;1mhello\e[0m\n"
hello
$ printf "\e[32;1mhello\e[0m\n" | cat -vet
^[[32;1mhello^[[0m$
$ printf "\e[32;1mhello\e[0m\n" | sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g' | cat -vet
hello$
Avez-vous essayé
cat /bin/mkdir | tr -cd "[:print:]"
Je pense que ça résout le problème ?
Si seul le contenu textuel vous intéresse, vous pouvez également utiliser
cat /bin/mkdir | strings
Savez-vous quel encodage le fichier utilise actuellement ? Si c'est le cas, vous pouvez utiliser iconv pour le convertir. C'est un utilitaire pour convertir d'un encodage de caractères à un autre. Ainsi, si le fichier d'origine est en UTF-8 et que vous souhaitez convertir en ASCII, vous pouvez utiliser ce qui suit :
iconv -f utf8 -t ascii <inputfile>
La commande de fichier sur le fichier d'entrée peut vous indiquer l'encodage actuel.
Fait intéressant, il existe une commande appelée enca qui fera de son mieux pour déterminer l'encodage de caractères utilisé si vous connaissez la langue du contenu du fichier.
Cette autre question pourrait être la réponse.
Cela ne semble pas fonctionner avec sed
. Peut-être tr
fera l'affaire ?
tr -d '\200-\377'
Ou avec le complément :
tr -cd '\000-\177'