|Portada|Blog|Space| Volver a: [sedder] Jump Tables: Los jump tables son una forma no demasiado sucia de lograr funciones en sed de manera poco sucia. De hecho hasta sería posible generar la jump table automáticamente. Dada su importancia hasta merece que el label :j esté dedicado a su uso. Su implementación se logra definiendo al final del script una lista que comienza con :j; y sigue con cada una de las labels que queramos poner en nuestra jump table, usando la forma: s/|pelota$//;tpelota; donde pelota es nuestro label de ejemplo. Aunque parezca innecesario u obvio este procedimiento, lo que nos permite en detalle es poder obtener algo similar a los GOTOs calculados. Si además tenemos una estricta convención de llamadas, podemos usar el final del pattern space para colocar "argumentos" que separaremos de alguna forma simple, por ejemplo usando el caracter "|", y lograr así ni más ni menos que funciones. Ejemplo, un programa que agrega un guión al principio y al final de cada línea: # Hago lo que tengo que hacer: s/.*/-&-/ # llamo a la función: s/$/|l1/ bmostrar; :l1; # Fin del script: b # Me defino mi función: :mostrar h;s/|.*//;p;x;tj # Nuestra pequeña jump table: :j s/|l1$//;tl1; Y bueno, como se habrán imaginado, las jump tables nos permiten tener la posibilidad de definirnos funciones sumamente útiles como g, h, G, H y x paramétricos para así tener hashes :D~~~