O AWK é uma linguagem muito pequena e tem apenas alguns tipos de dados básicos. Nesta lição, vamos ver números e strings.
Os números no AWK são implementados como números de ponto flutuante de precisão dupla. Não há distinção entre inteiros, números de ponto flutuante e números de precisão dupla.
O AWK entende constantes numéricas octais (começando com 0) e constantes numéricas hexadecimais (começando com 0x ou 0X).
Você pode usar os operadores aritméticos padrão +, -, *, /, %.
O operador de exponenciação é ^.
Existem algumas funções numéricas internas, 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.
Strings no AWK são sequências de caracteres. Especifique uma constante do tipo string usando aspas duplas.
Existe apenas 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 concatená-las:
BEGIN {
hw = "Hello" "World"
print hw
}
# => HelloWorld
print é uma instrução, não uma função.
print não exige parênteses.
O AWK tem uma grande variedade de funções de manipulação de strings. Vamos conhecê-las em profundidade conforme avançarmos pela trilha.
Não há operadores explícitos para converter entre números e strings. O AWK faz isso implicitamente, com base no contexto do programa. Isso torna muito simples trabalhar com os valores dos campos de entrada: em geral, o AWK faz exatamente o que você quer.
print x + y converte os valores das variáveis x e y para números, graças à operação numérica +.print x y converte os valores das variáveis x e y para strings, graças à operação de concatenação.Se você quiser ser explícito, 0 + x dá a representação numérica de x e "" x dá a representação de x como string.
A forma como o AWK converte uma string em número pode ser confusa. Uma forma simples de pensar nisso é que o AWK lê os "caracteres de número" desde o início da string até encontrar um caractere que não seja número. Alguns exemplos:
"2.5" é convertido para o número 2.5;"1e3" é convertido para o número 1000 (notação científica);"456abc" é convertido para o número 456 (como a não é um "numeral", a conversão para por aí)."abc789" é convertido para o número 0 (não há números no início da string).Você está ajudando um amigo a gerar um relatório a partir de leituras que ele fez em diferentes cantos do jardim dele. Infelizmente, seu amigo guardou os dados em um formato estranho. Cada leitura é um conjunto de campos separados por vírgula. No entanto, ele distribuiu números de dois dígitos em duas colunas.
| número do campo | significado |
|---|---|
| 1 | número de ID |
| 2 | localização |
| 3 | primeira leitura, valor das dezenas |
| 4 | primeira leitura, valor das unidades |
| 5 | segunda leitura, valor das dezenas |
| 6 | segunda leitura, valor das unidades |
Para uma linha de entrada como 101,house,4,2,5,4
42,54.Sua tarefa é encontrar a média das duas leituras e produzir a saída de cada linha no seguinte formato
#<id>, <label> = <average>
Como a média de 42 e 54 é 48, a saída para a linha de exemplo deve ser:
#101, house = 48
Crie sua conta no Exercism para aprender e dominar AWK com 3 conceitos92 exercícios e mentoria humana de verdade, tudo de graça.