¿Cómo coincidir con la regexp con ceniza?
Pregunta
Siguiendo el código funciona para Bash, pero ahora lo necesito para Bus BusyBox Ash, que apenas no tiene "= ~"
keyword="^Cookie: (.*)$"
if [[ $line =~ $keyword ]]
then
bla bla
fi
¿Hay un reemplazo adecuado?
Lo siento si esta es una pregunta de superusuario, no se pudo decidir.
Editar: tampoco hay grep, sed, awk, etc. Necesito ceniza pura.
Solución
para esta en particular, podría escapar a una Expansión de parámetros Hack:
if [ "$line" = "Cookie: ${line#Cookie: }" ]; then
echo a
fi
o una Notación de coincidencia de patrones + Case Hack:
case "$line" in
"Cookie: "*)
echo a
;;
*)
;;
esac
Sin embargo, esas soluciones son estrictamente menos poderosas que regexes porque no tienen una estrella de Kleene real*
(solo .*
) y usted debe realmente obtener algunas herramientas más poderosas (un lenguaje de programación real como python?) Instalado en ese sistema o lo sufre
Otros consejos
busybox viene con un applet expr
que puede hacer una coincidencia regex (anclada al comienzo de una cadena).Si el Regex coincide, su código de retorno será 0. Ejemplo:
# expr "abc" : "[ab]*"
# echo $?
0
# expr "abc" : "[d]*"
# echo $?
1