[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

gawk - Consulta sobre sintaxis...



Hola gente:

Buen año para todos antes que nada.

Resulta que quiero aislar el entero de la temperatura que me arroja el comando sensors para los distintos cores...

wodari@debi5:~$ sensors | grep Core
Core 0:         +38.0°C  (high = +80.0°C, crit = +99.0°C)
Core 1:         +40.0°C  (high = +80.0°C, crit = +99.0°C)
Core 2:         +41.0°C  (high = +80.0°C, crit = +99.0°C)
Core 3:         +46.0°C  (high = +80.0°C, crit = +99.0°C)

... tomando de a una línea por vez ...

wodari@debi5:~$ sensors | grep "Core 0"
Core 0:         +38.0°C  (high = +80.0°C, crit = +99.0°C)

De la línea de arriba me interesa sólo el valor entero 37.

Con...

wodari@debi5:~$ sensors | grep "Core 0" | gawk '//{print $3}'

... obtengo   +38.0°C

A lo bruto, y presuponiendo que el valor va ha ser siempre de 2 dígitos, la hacía así...

wodari@debi5:~$ sensors | grep "Core 0" | gawk '//{print substr($3,2,2)}'
38

... pero me parece más prolijo ubicar el "+" y el "." y obtener lo que queda dentro.

Entonces hice lo siguiente...

wodari@debi5:~$ sensors | grep "Core 0" | gawk '//{print substr($3,match($3,"+")+1,2)}'
38

... ubicando la posición del "+", sumo 1 y desde ahí se que está la temperatura y tomo los 2 dígitos. Pero quisiera mejorarlo y obtener la posición del "." porque si el valor fuera de 1 dígito o 3 dígitos esto ya no funcionaría. Y aquí se me presenta el problema, cuando busco el "." con match($3,".") me devuelve el valor 1 y en realidad debería ser 4. Supongo que debe ser un problema en la forma de indicarle el punto. ¿llevará algún otro tipo de comillas para que lo interprete? A cualquiera de los otros caracteres de la cadena "+38.0°C" los ubica bien, con el "." no hay caso.


Bueno, espero que me entiendan y me den alguna idea.

Anticipadas gracias y saludos.


--

Walter O. Dari

http://swcomputacion.com/
skype: waomda


Reply to: