AWK es un lenguaje muy pequeño y solo tiene unos pocos tipos de datos básicos. En esta lección veremos números y strings.
Los números en AWK se implementan como números de punto flotante de doble precisión. No hay distinción entre enteros, números de punto flotante y dobles.
AWK entiende las constantes numéricas octales (que empiezan con 0) y las constantes numéricas hexadecimales (que empiezan con 0x o 0X).
Puedes usar los operadores aritméticos estándar +, -, *, /, %.
El operador de exponenciación es ^.
Hay algunas funciones numéricas integradas, como las funciones trigonométricas, la generación de números aleatorios y int(x) para truncar un número al entero más cercano entre x y cero.
Los strings de AWK son cadenas de caracteres. Especifica una constante de string usando comillas dobles.
Solo hay una operación con strings: la concatenación. La concatenación no tiene un operador especial; basta con poner dos strings uno al lado del otro para concatenarlos:
BEGIN {
hw = "Hello" "World"
print hw
}
# => HelloWorld
print es una sentencia, no una función.
print no requiere paréntesis.
AWK tiene una gran cantidad de funciones para manipular strings. Las iremos conociendo en profundidad a medida que avancemos por el track.
No hay operadores explícitos para convertir entre números y strings. AWK hace esto de forma implícita según el contexto del programa. Esto hace que trabajar con los valores de los campos de entrada sea muy sencillo: por lo general, AWK simplemente hace lo que quieres que haga.
print x + y convertirá los valores de las variables x y y a números gracias a la operación numérica +.print x y convertirá los valores de las variables x y y a strings gracias a la operación de concatenación.Si quieres ser explícito, 0 + x da la representación numérica de x y "" x da la representación como string de x.
La forma en que AWK convierte un string a un número puede resultar confusa. Una manera sencilla de pensarlo es que AWK lee «caracteres numéricos» desde el principio del string hasta que encuentra un carácter que «no es un número». Algunos ejemplos son:
"2.5" se convierte en el número 2.5;"1e3" se convierte en el número 1000 (notación científica);"456abc" se convierte en el número 456 (como a no es un «numeral», la conversión se detiene ahí)."abc789" se convierte en el número 0 (no hay números al principio del string).Estás ayudando a un amigo a generar un informe a partir de las lecturas que tomó en distintos rincones de su jardín. Lamentablemente, tu amigo guardó los datos en un formato extraño. Cada lectura es un conjunto de campos separados por comas. Sin embargo, guardó los números de dos dígitos repartidos en dos columnas.
| número del campo | significado |
|---|---|
| 1 | número de ID |
| 2 | ubicación |
| 3 | primera lectura, valor de las decenas |
| 4 | primera lectura, valor de las unidades |
| 5 | segunda lectura, valor de las decenas |
| 6 | segunda lectura, valor de las unidades |
Para una fila de entrada como 101,house,4,2,5,4
42,54.Tu tarea es encontrar el promedio de las dos lecturas y mostrar los resultados de cada fila en el siguiente formato
#<id>, <label> = <average>
Como el promedio de 42 y 54 es 48, el resultado de la fila de ejemplo debería ser:
#101, house = 48
Regístrate en Exercism para aprender y dominar AWK con 3 conceptos92 ejercicios y mentoría humana real, todo gratis.