Las soluciones ofrecidas aquí no funcionaron para mí. Tal vez mi problema era diferente, pero necesitaba eliminar los colores ASCII y otros caracteres del texto ASCII puro.
Sin embargo, lo siguiente funcionó para mí:
Eliminación de códigos de escape del texto ASCII
sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g'
En contexto (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$
¿Lo intentaste?
cat /bin/mkdir | tr -cd "[:print:]"
Creo que resuelve el problema?
Si solo le interesa el contenido de texto, también puede usar
cat /bin/mkdir | strings
¿Sabe qué codificación está utilizando actualmente el archivo? Si es así, puede usar iconv para convertirlo. Es una utilidad para convertir de una codificación de caracteres a otra. Entonces, si el archivo original está en UTF-8 y desea convertirlo a ASCII, puede usar lo siguiente:
iconv -f utf8 -t ascii <inputfile>
El comando de archivo en el archivo de entrada puede indicarle la codificación actual.
Curiosamente, hay un comando llamado enca que hará todo lo posible para determinar la codificación de caracteres que se utiliza si conoce el idioma del contenido del archivo.
Esta otra pregunta podría ser la respuesta.
Esto no parece funcionar con sed
. Quizás tr
hará?
tr -d '\200-\377'
O con el complemento:
tr -cd '\000-\177'