GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo eliminar caracteres que no son ascii usando sed

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'

Linux
  1. Cómo eliminar la partición del disco usando el comando Parted

  2. Eliminar un carácter específico usando awk o sed

  3. sed - cómo hacer grupos de expresiones regulares usando sed

  4. ¿Cómo eliminar un prefijo de palabra usando grep?

  5. Cómo eliminar el carácter \r con sed

Cómo eliminar directorios y archivos usando Linux

Cómo eliminar archivos y directorios usando la línea de comandos de Linux

Cómo quitar líneas de un archivo usando el comando Sed

¿Cómo eliminar las primeras N líneas de un archivo ASCII usando los comandos de Shell?

Tutorial de Unix Sed:Cómo escribir en un archivo usando Sed

Cómo eliminar un reenviador de correo electrónico mediante cPanel