Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 5 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Ancestral
Forista Ancestral
Avatar de Usuario

Registrado: Mié Abr 11, 2007 11:00 pm
Mensajes: 8259
Ubicación: tras la pantalla (...)

Nota Publicado: Mié Dic 09, 2009 6:21 pm 
Arriba  
Código:
niky@4200: ~/MONITOR $  echo "100 - `top -n 1 |grep Cpu |awk '{print $5}' |sed 's/id,//'|sed 's/%//'|sed 's/ /_/' `"
100 - 92.0
niky@4200: ~/MONITOR $  echo "100 - `top -n 1 |grep Cpu |awk '{print $5}' |sed 's/id,//'|sed 's/%//'|sed 's/ /_/' `" |bc
(standard_in) 1: illegal character: ^[
(standard_in) 1: syntax error
(standard_in) 1: illegal character: ^[
(standard_in) 1: illegal character: ^[
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: illegal character: ^[
(standard_in) 1: illegal character: ^[
(standard_in) 1: illegal character: ^[
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: illegal character: ^[
(standard_in) 1: illegal character: ^[
(standard_in) 2: syntax error
niky@4200: ~/MONITOR $  echo "1 + 2" | bc
3
niky@4200: ~/MONITOR $  echo "1 - 2.3" | bc
-1.3
niky@4200: ~/MONITOR $


bueno, pues eso. por que no funciona??, si la salida del comando es correcta (son dos numeros), por que da error de sintaxis?? alguna idea??

para quien no sepa de que va: bc es algo asi como una calculadora en linea de comandos. Y lo que quiero es que me reste dos cantidades, una de las cuales sale de un comando.

ah, con una variable tampoco me deja. (me deja si la variable NO sale del comando, aunque he verificado por activa y por pasiva que la variable es un numero... ) digo:

Código:
niky@4200: ~/MONITOR $  A=1
niky@4200: ~/MONITOR $  B=22.6
niky@4200: ~/MONITOR $  echo "$A + $B" |bc
23.6
niky@4200: ~/MONITOR $


pero si la variable es la salida de ese comando, no deja.

*nota: el ultimo sed del comando es para verificar que NO hay espacios. la salida del "top ... " es un numero sin mas.

a ver si a alguien se le ocurre algo... porque yo ya no se lo que le pasa. :wink:

_________________
#446716

--Not me, guys. I read the Bash man page each day like a Jehovah's Witness reads the Bible. No wait, the Bash man page IS the bible. Excuse me...
(from comp.os.linux.misc)
[ DNFD ] - [ F4A ] - [ dotfiles ]

 Perfil Email WWW  

Desconectado
Forista Mayor
Forista Mayor

Registrado: Vie Ago 24, 2007 11:00 pm
Mensajes: 790
Ubicación: Galicia - España

Nota Publicado: Dom Dic 13, 2009 3:14 am 
Arriba  
Me da la impresión que la salida de top no es exactamente texto plano si no que mete algunos código que deberían ser interpretados por la consola (como cuando en un echo metes instrucciones para cambiar el color del texto). Para que te funcionara el bc supongo que deberías tratar de filtrar esto pero no se como hacerlo.

Como alternativa podrías usar este comando, no te da los decimales, pero funciona

Código:
vmstat | sed -n 3'p' | awk '{ print $15 }'

_________________
Mi blog: Conocimiento Abierto

 Perfil WWW  

Desconectado
Forista Ancestral
Forista Ancestral
Avatar de Usuario

Registrado: Mié Abr 11, 2007 11:00 pm
Mensajes: 8259
Ubicación: tras la pantalla (...)

Nota Publicado: Dom Dic 13, 2009 11:19 am 
Arriba  
@fpuga: bueno, muchas gracias. efectivamente, parece que es de ahi:

Código:
niky@3800:~$ bash TEST
TEST: line 1: let: 95.4: error sintáctico: operador aritmético inválido (error token is ".4")
niky@3800:~$ cat TEST
let VAR=echo "`top -n 1 |grep Cpu |awk '{print $5}' |sed 's/id,//'|sed 's/%//'|sed 's/ /_/'`"
niky@3800:~$


pero le caso es que necesito los decimales..... (que si no no queda bien.).

pregunta..... como consigo que me vea el punto como un signo decimal?? (verlo lo ve..... salvo que salga de es comando)

(otra opcion es multiplicar todo por 10, pero creo que tendria el mismo problema, para multiplicar)

en fin, muchas gracias. vere que se me ocurre.

*nota: let es la forma de declarar variables numericas como tal en bash. aunque.... me acabo de dar cuenta. let solo trabaja con enteros.....

Código:
niky@3800:~$ let AA=8.5
bash: let: AA=8.5: error sintáctico: operador aritmético inválido (error token is ".5")
niky@3800:~$


estooooo.... pero si let no trabaja con decimales, la prueba que he hecho al principio, no prueba nada. :shock:

vale, me he quedado sin ideas. ya vere a ver si me vuelven...... :|

_________________
#446716

--Not me, guys. I read the Bash man page each day like a Jehovah's Witness reads the Bible. No wait, the Bash man page IS the bible. Excuse me...
(from comp.os.linux.misc)
[ DNFD ] - [ F4A ] - [ dotfiles ]

 Perfil Email WWW  

Desconectado
Forista Mayor
Forista Mayor

Registrado: Vie Ago 24, 2007 11:00 pm
Mensajes: 790
Ubicación: Galicia - España

Nota Publicado: Lun Dic 14, 2009 3:22 am 
Arriba  
La salida del comando bc yo entiendo que te está diciendo cual es el caracter ilegal "^[ ". Creo que deberías tratar de identificar cual es ese caracter y después filtrarlo con sed. Si por ejemplo te estuviera diciendo "illegal character: ^M" lo que tendrías que hacer es un sed "s/[\r\n]//" pero no se que código corresponde a ^[

_________________
Mi blog: Conocimiento Abierto

 Perfil WWW  

Desconectado
Forista Ancestral
Forista Ancestral
Avatar de Usuario

Registrado: Mié Abr 11, 2007 11:00 pm
Mensajes: 8259
Ubicación: tras la pantalla (...)

Nota Publicado: Lun Dic 14, 2009 2:55 pm 
Arriba  
fpuga escribió:
La salida del comando bc yo entiendo que te está diciendo cual es el caracter ilegal "^[ ". Creo que deberías tratar de identificar cual es ese caracter y después filtrarlo con sed. Si por ejemplo te estuviera diciendo "illegal character: ^M" lo que tendrías que hacer es un sed "s/[\r\n]//" pero no se que código corresponde a ^[


:!: no lo habia pensado. Bueno, lo mirare. Muchas gracias!!!! :)

_________________
#446716

--Not me, guys. I read the Bash man page each day like a Jehovah's Witness reads the Bible. No wait, the Bash man page IS the bible. Excuse me...
(from comp.os.linux.misc)
[ DNFD ] - [ F4A ] - [ dotfiles ]

 Perfil Email WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 5 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO