On Sat, 11 Sep 2004 13:15:07 +0200, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
> On Fri, 10 Sep 2004 20:33:11 +0200, I�aki <[EMAIL PROTECTED]> 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

Responder a