1 votos

Enviar UTF-8 a sed a través de Ejecutar script de shell en Shortcuts.app

Problema

Quiero un atajo para convertir texto con caracteres diacríticos como café a texto ASCII como cafe, usando sed. Aquí tienes un ejemplo simplificado:

sed -e 'y/é/e/'

Esto se ejecuta correctamente en Terminal. Pero cuando lo pego en el campo de Ejecutar script de shell en Atajos y lo ejecuto, devuelve un error "sed: 1: "y/é/e/ ": las cadenas de transformación no son de la misma longitud".

diálogo de error

Creo que el texto del script introducido está bien, porque seguirá funcionando en Terminal si lo copio/pego de nuevo desde Atajos.

Supongo que Atajos descompone la "é" en dos caracteres UTF-8 "e´" cuando lo envía al shell, por lo que el carácter individual cuenta como dos.

Pregunta

¿Cómo puedo introducir texto UTF-8 con caracteres diacríticos para que sed los acepte como caracteres individuales?

0voto

Martin R Puntos 181

Compara 5.9 Caracteres multibyte y Consideraciones de Localización de la documentación de GNU sed:

GNU sed procesa caracteres multibyte válidos en entornos multibyte (por ejemplo, UTF-8).

Aparentemente, la variable de entorno LANG está configurada en una localización UTF-8 en la Terminal, pero no al ejecutar Scripts en la aplicación Shortcuts. La solución es configurar explícitamente LANG en el script:

LANG=en_US.UTF-8 sed -e 'y/é/e/'

o

export LANG=en_US.UTF-8
sed -e 'y/é/e/'

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X