Organizar los argumentos de sed via contador o algo alternativo.

18 views
Skip to first unread message

Alexandro Colorado

unread,
Jan 20, 2013, 3:16:23 AM1/20/13
to Linux Mérida
Saludos, como veo que andan con eso de Bash igual quiero pedir algo de ayuda con script que uso para ver los marcadores de la NBA.

El script empezo como un oneliner, un simple dump de lynx con un grep

lynx -dump http://..... |grep -3 $1|tail -5
(El tail lo uso por que me interesa la ultima incidencia en vez de la primera ya que el sitio primero lista todos los equipos y luego pone los marcadores.)

Despues lo quize aumentarlo para que si no le doy un argumento me diera todos los resultados.

Asi que hice una condicional

#!/bin/bash
if [ -z "$1" ]
   then
     lynx -dump http://....|sed "195,297!d"
else
     lynx -dump http://....|grep -3 $1|tail -5
fi

El -z $1 me dice que si es vacio el desplegue completo, como el sitio es muy largo, use sed para unicamente extraer un rango de lineas (olviarme de headers footers y menus).

AHORA lo que quiero hacer es algo mas intresante.

Ya que los resultados habeces son demasiados y escapan la pantalla, y no siempre se quien juega, quiero hacer una funcion que me permita asignar valores numericos para poder ver los marcadores  de manera individual. Ejemplo:

$miscript 1

                     1  2 3 4 Total
     [170]San Antonio 12         12  6:08
     [171]Atlanta     11         11   1st

                     TV: FSSW, SPSO, C+D
   [172]Box Score Live: [173]GameChannel

$miscript 2
                    1  2 3 4 Total
     [174]Sacramento 14         14  5:49
     [175]Charlotte  9           9   1st

                          TV: CSCA, SPSO
   [176]Box Score Live: [177]GameChannel

etc...

Para esto lo que me gustaria es que dependiendo el  valor de argument ($1) sea el rango que sed agarre. Asi que si por ejemplo $1 = 1 sed "195,205!d", si $1 = 2 sed "206,216!d" y asi... como podran ver va de 10 en 10 lineas de aumento.

Puedo poner variables y hacer un contador similar a sed "$inicio,$final!d" inicio=inicio+10; final=final+10... sin embargo los contadores son secuenciales y me gustaria algo mas automagico que sea operado por los valores de $1.

Actualmente mi script lo movere de un if a un case y que le da mas fluides a las opciones, tambien quiero meterle funciones para que no este todo mezclado.

ejemplo:
#!/bin/bash
url=http://...;
start=195;

case "$1" in
[0-9]*) lynx -dump $url|sed "$start,$start+6!d"
   ;;
[A-Z]*) lynx -dump $url|grep -3 $1|tail -5
   ;;
*) lynx -dump $url|sed "195,319!d"
  ;;
esac

--
Alexandro Colorado
Apache OpenOffice Contributor
http://es.openoffice.org


Reply all
Reply to author
Forward
0 new messages