1 votos

Caracteres de control de escape en bash script

Necesito una solución para escapar caracteres de control de una cadena.

Lo que necesito es girar esto:

%f4^rH13#b$rHN

en esto:

%f4\^rH13\#b\$rHN

He encontrado una solución que funciona con GNU sed en stackoverflow que no funcionará en MacOS vainilla. También encontré una solución para escapar nunca carácter en MacOS . Pero no he encontrado una solución para escapar sólo caracteres de control.

2voto

Una diferencia principal entre GNU sed y BSD sed es que la versión BSD espera el cierre } de una lista de funciones en una nueva línea.

Lo siguiente funciona en MacOS (son tres líneas distintas, basta con pulsar Return antes de entrar en el } ):

echo '%f4^rH13#b$rHN' | LC_ALL=C \
sed -e 's/[^a-zA-Z0-9,._+@%/-]/\\&/g; 1{$s/^$/""/
}; 1!s/^/"/; $!s/$/"/'

1voto

Nils Gerke Puntos 1

Podemos utilizar perl para hacerlo:

$ echo '%f4^rH13#b$rHN' | perl -pe 's/([^a-zA-Z0-9,._+@%\/\n-])/\\$1/g'

Esto funciona en MacOS Ventura 13.2.1, pero tenga en cuenta que Apple podría eliminar los tiempos de ejecución de lenguajes de scripting como perl en futuras versiones. Como se indica en las notas de la versión 11 de macOS:

Los tiempos de ejecución de lenguajes de script como Python, Ruby y Perl se incluyen en MacOS para garantizar la compatibilidad con el software heredado. En futuras versiones de MacOS, los tiempos de ejecución de lenguajes de scripting no estarán disponibles por defecto y puede que sea necesario instalar un paquete adicional.

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