Archivo

Entradas Etiquetadas ‘awk’

Bash script: Redondear número flotante

Lunes, 8 de febrero de 2010 4 comentarios

Otra entrada de bash script, que últimamente lo tengo que tocar mucho. Voy a explicar algunas formas de poder redondear un número flotante a un entero, algo que en algunas ocasiones se hace indispensable. Leer más…

GD Star Rating
loading...
Share

Bash script: Midiendo el tiempo de ejecución de programas

Sábado, 6 de febrero de 2010 2 comentarios

El comando time en GNU/Linux nos permite conocer muchos detalles sobre el tiempo de ejecución de otro comando o aplicación que ejecutemos. Cuando ejecutamos el programa time sin ninguna opción obtenemos una salida similar a la siguiente

 time comando argumentos
...
salida comando
...
real	0m0.010s
user	0m0.010s
sys	0m0.000s

Donde real indica el tiempo que ha pasado desde que se ejecuta el comando hasta que termina, user indica el tiempo usado por el proceso en modo usuario y sys muestra el tiempo usado por el sistema en manejar el proceso (modo kernel). Generalmente se coge como el tiempo de ejecución de un programa a la suma de las cantidades retornadas por user y sys, ya que si el sistema tiene una carga de procesamiento importante Leer más…

GD Star Rating
loading...
Share

Problemas con AWK, valores reales y locales

Martes, 26 de mayo de 2009 2 comentarios

terminal-icon

Menudo mosqueo que me he pillado hoy con awk. Todo lo que os explico a continuación viene dado porque al ejecutar un script que ya había comprobado que funcionaba en el ordenador del trabajo, este no me funcionaba correctamente en mi pc. Después de un par de horas peleándome (son varios scripts de cierta entidad relacionados entre si) a ver que cipote estaba ocurriendo me he dado cuenta de que AWK no me era capaz de sumar un par de valores reales, más concretamente se quedaba con la parte entera del número pero descartaba la parte decimal.

Una vez que he localizado el problema, resolverlo ha sido cuestión de googlear un poco. En esta página una persona envío un bug hace casi tres años comentando más o menos lo que os vengo comentando. Uno de los administradores comenta que este problema se da porque al utilizar los locales españoles, el separador que se utiliza para separar la parte entera de la decimal en números reales es la coma(,) en vez del punto(.). Así que si os encontráis con este tipo de problemas podéis solucionarlos fácilmente exportando la variable LC_ALL con el valor C. Podéis hacer esto en cada comando awk que ejecutéis:

LC_ALL=C awk -f .... FILE

O añadir la siguiente línea en vuestro fichero ~/.bashrc

export LC_ALL=C

GD Star Rating
loading...
Share