@ Julio-Guerra: me encontré con una situación similar, tratando de eliminar las líneas como el folowing (tenga en cuenta el carácter Æ
) :
--MP_/yZa.b._zhqt9OhfqzaÆC
en un archivo, utilizando
sed 's/^--MP_.*$//g' my_file
La codificación de archivos indicado por el comando Linux file
era
file my_file: ISO-8859 text, with very long lines
file -b my_file: ISO-8859 text, with very long lines
file -bi my_file: text/plain; charset=iso-8859-1
Probé su solución, con varias permutaciones (inteligente!); por ejemplo,
LANG=ISO-8859 sed 's/^--MP_.*$//g' my_file
pero ninguno de los que trabajó. Encontré dos soluciones:
- La siguiente expresión
Perl
funcionó, es decireliminado que line:
perl -pe 's/^--MP_.*$//g' my_file
[Para una explicación de las -pe
modificadores de línea de comando, consulte esta respuesta StackOverflow:
Perl flags -pe, -pi, -p, -w, -d, -i, -t?]
- Alternativamente, después de convertir la codificación del archivo a UTF-8, la expresión sed funcionó (el carácter
Æ
permaneció, pero ahora estaba codificado en UTF8):
iconv -f iso-8859-1 -t utf8 my_file > my_file.utf8
Como estoy trabajando con un montón (1000), acerca de los correos electrónicos con varias codificaciones, que se someten a tratamiento intermedio (conversiones de bash-guión a UTF-8 no siempre funciona), para mis propósitos "solución 1 "arriba probablemente sea la solución más robusta.
Notas:
- sed (sed de GNU) v5.26.1 4.4
- Perl construido para x86_64-linux-hilo multi-
sistema x86_64
- Arch Linux