O AWK é uma linguagem muito pequena e tem apenas alguns tipos de dados básicos. Nesta lição vamos ver os números e as strings.
Os números em AWK são implementados como números de vírgula flutuante de precisão dupla. Não há distinção entre inteiros, números de vírgula flutuante e números de precisão dupla.
O AWK reconhece constantes numéricas octais (que começam por 0) e constantes numéricas hexadecimais (que começam por 0x ou 0X).
Podes usar os operadores aritméticos habituais +, -, *, /, %.
O operador de exponenciação é ^.
Existem algumas funções numéricas incorporadas, incluindo funções trigonométricas, geração de números aleatórios e int(x) para truncar um número para o inteiro mais próximo entre x e zero.
As strings em AWK são sequências de carateres. Especifica uma constante de string usando aspas duplas.
Só existe uma operação com strings: a concatenação. A concatenação não tem um operador especial; basta colocar duas strings lado a lado para as concatenar:
BEGIN {
hw = "Hello" "World"
print hw
}
# => HelloWorld
print é uma instrução, não uma função.
print não precisa de parênteses.
O AWK tem uma vasta coleção de funções de manipulação de strings. Vamos conhecê-las em detalhe à medida que avançamos no track.
Não existem operadores explícitos para converter entre números e strings. O AWK fá-lo implicitamente, com base no contexto do programa. Isto torna muito simples trabalhar com os valores dos campos de entrada: na maior parte das vezes, o AWK faz simplesmente o que queres que faça.
print x + y vai converter os valores das variáveis x e y em números, graças à operação numérica +.print x y vai converter os valores das variáveis x e y em strings, graças à operação de concatenação.Se quiseres ser explícito, 0 + x dá a representação numérica de x e "" x dá a representação em string de x.
A forma como o AWK converte uma string num número pode ser confusa. Uma maneira simples de pensar nisto é que o AWK lê os "carateres numéricos" desde o início da string até encontrar um caráter que não seja um número. Alguns exemplos:
"2.5" converte-se no número 2.5;"1e3" converte-se no número 1000 (notação científica);"456abc" converte-se no número 456 (como a não é um "numeral", a conversão para aí)."abc789" converte-se no número 0 (não há números no início da string).Estás a ajudar um amigo a gerar um relatório a partir das leituras que ele fez em diferentes cantos do seu jardim. Infelizmente, o teu amigo guardou os dados num formato estranho. Cada leitura é um conjunto de campos separados por vírgulas. No entanto, ele guardou números de dois algarismos distribuídos por duas colunas.
| número do campo | significado |
|---|---|
| 1 | número de identificação |
| 2 | localização |
| 3 | primeira leitura, algarismo das dezenas |
| 4 | primeira leitura, algarismo das unidades |
| 5 | segunda leitura, algarismo das dezenas |
| 6 | segunda leitura, algarismo das unidades |
Para uma linha de entrada como 101,house,4,2,5,4
42,54.A tua tarefa é encontrar a média das duas leituras e apresentar os resultados de cada linha no seguinte formato
#<id>, <label> = <average>
Como a média de 42 e 54 é 48, o resultado para a linha de exemplo deve ser:
#101, house = 48
Inscreve-te no Exercism para aprenderes e dominares AWK com 3 conceitos92 exercícios, e mentoria humana real, tudo grátis.