Re: Shell, comandos grep y awk
On Sat, 11 Sep 2004 13:15:07 +0200, jamarier@gmail.com
<jamarier@gmail.com> wrote:
> On Fri, 10 Sep 2004 20:33:11 +0200, Iñaki <ibc2@euskalnet.net> wrote:
> > Hola a todos,
> >
> > Estoy intentando pulir el tema de karamba de mi escritorio. Entro otras cosas
> > tengo un campo para visualizar el total descargado de internet desde que se
> > arrancó el sistema. Ahora mismo lo obtengo así:
> >
> > /sbin/ifconfig eth0 | grep 'RX byte' | awk '{print $7 $8}'
> >
> > Y la salida de esta concatenación de comandos y tuberías es (a modo de
> > ejemplo):
> >
> > (58.2MiB)
> > ó
> > (750.5KiB)
> > ó
> > (1.2GiB)
> >
> > Lo que pretendo es quitar los paréntesis, la "i" de las unidades y separar el
> > valor numérico de las unidades. Es decir:
> >
> > 58.2 MB
> > 750.5 KB
> > 1.2 GB
>
> Bueno, El sistema internacional de medidas Dice que se ha de emplear
> GiB cuando son GiB y GB cuando son GB. Me explico: no es lo mismo 90º
> que 90 radianes. Por lo que considero que es un mal cambio el quitar
> la 'i'
>
> Ahora no tengo ningun ifconfig ni ningun perl a mano (si dentro de un rato no dan una
> solución más simple de las que hay puestas te pongo mi solución), pero todo los
> pipes se pueden sustituir por algo del estilo...
>
Ahora si tengo el perl y el ifconfig a mano.
Mi versión de ifconfig da los datos como tu quieres B-)
así que no hay que hacer mucho.
Mi script probado es el siguiente: (lo separo en 3 lineas por claridad
pero va todo junto.
ifconfig eth0 |
perl -ne
"print if s!.*?RX bytes.*?\(([0-9.]*) ([KMG]).*!\1 \2B!"
Esta linea reconoce (12.3 Mb e imprime lo mismo
En tu caso el núcleo del patron sería el mismo solo que eliminando el
espacio detras de ([0-9.]).
¿Explicación?
El comando s!!! es un patron de sustitución. busca lo que hay entre
los primeros !! y lo sustituye por los segundos !!. Si el cambio es un
éxito devuelve un valor afirmativo. Además del reconocimiento se
almacena los valores que nos interesan ([0-9.]*) es el número y
([KMG]) es la letra de unidades. Sustituyendo la línea entera por
estos dos datos. Si se ha producido sustitución, imprimimos el
resultado. En caso contrario ignoramos la linea y vamos a la siguiente
(eso es debido a la opción -n).
>
> Yo aprendería un poquito de perl ;-)
>
Yo también. ;-)
atte javier m mora
Reply to: