AWK es un lenguaje muy pequeño y solo tiene unos pocos tipos de datos básicos. En esta lección vamos a ver los números y los strings.
Los números en AWK se implementan como números de coma flotante de doble precisión. No hay distinción entre enteros, números de coma flotante y números de doble precisión.
AWK entiende las constantes numéricas octales (que empiezan por 0) y las constantes numéricas hexadecimales (que empiezan por 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), que trunca un número al entero más cercano entre x y cero.
Los strings de AWK son secuencias de caracteres. Las constantes de string se especifican con comillas dobles.
Solo hay una operación con strings: la concatenación. La concatenación no tiene un operador especial; basta con colocar dos strings uno al lado del otro para concatenarlos:
BEGIN {
hw = "Hello" "World"
print hw
}
# => HelloWorld
print es una instrucción, 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 lo hace 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 e y a números gracias a la operación numérica +.print x y convertirá los valores de las variables x e 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 forma sencilla de verlo es pensar que AWK lee «caracteres numéricos» desde el principio de un string hasta que encuentra un carácter «no numérico». 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 ha tomado en distintos rincones de su jardín. Por desgracia, tu amigo ha guardado los datos en un formato extraño. Cada lectura es un conjunto de campos separados por comas. Sin embargo, ha guardado números de dos dígitos repartidos en dos columnas.
| número de 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 la media de las dos lecturas y mostrar los resultados de cada fila en el siguiente formato
#<id>, <label> = <average>
Como la media de 42 y 54 es 48, la salida para 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.