bash - linea - sed shell
Obteniendo "error de sed-secuencia de bytes ilegal"(en bash) (4)
Además de LANG=C
y LC_CTYPE=C
, tuve que hacer LC_ALL=C
para hacer que esto funcione.
LC_ALL
anula todas las categorías LC_*
individuales. Por lo tanto, el enfoque más sólido es usar LC_ALL=C sed ...
- no es necesario tratar también con las otras variables.
Esta pregunta ya tiene una respuesta aquí:
- Error RE: secuencia de bytes ilegales en Mac OS X 5 respuestas
Haciendo una edición de flujo para cambiar el desagradable icono de Parallels. Está poco desarrollado e integrado en la propia aplicación en lugar de ser un archivo de imagen. Así que he localizado este comando sed que tiene algunos buenos comentarios:
sudo sed -i.bak s/Parallels_Desktop_Overlay_128/Parallels_Desktop_Overlay_000/g /Applications/Parallels/ Desktop.app/Contents/MacOS/prl_client_app
Devuelve sed: RE error: illegal byte sequence
¿Alguien puede explicar lo que esto significa? ¿Qué parte del comando es el problema?
Intente configurar la variable de entorno LANG
( LANG=C sed ...
) o use una de las herramientas sed binarias mencionadas aquí: reemplazo sed binario
¿Por qué el error?
Sin LANG=C
sed supone que los archivos están codificados en cualquier codificación especificada en LANG
y el archivo (que es binario) puede contener bytes que no son caracteres válidos en la codificación de LANG
(por lo tanto, podría obtener ''secuencia de bytes ilegales'').
¿Por qué LANG=C
funciona?
C pasa a tratar todos los caracteres ASCII como ellos mismos y los caracteres que no son ASCII como literales.
Logré hacerlo ejecutando:
unset LANG
antes del comando sed
No estoy seguro de lo que hice o por qué funciona, pero lo hice.
LANG=C
solo no funcionó, pero agregar LC_CTYPE=C
también lo resolvió.