msoliver
(usa Debian)
Enviado em 31/03/2020 - 21:28h
venuziano escreveu:
Olá pessoal,
Meu professor deu as seguintes atividades para serem resolvidas, no entanto, não estou sabendo como fazer utilizando o material de AWK disponível pela web, me perco em alguns comandos e o negócio acaba não fluindo. Resolvi duas das três atividades mas não sei se estão corretas. A análise do AWK precisa ser realizado em cima do primeiro .csv desse link:
https://support.spatialkey.com/spatialkey-sample-csv-data/ . O nome do csv é
FL_insurance_sample.csv. OBS
: No meu ubuntu precisei deixar o .csv com somente 30k de linhas, com o .csv original (36635 linhas dava erro).
Os enunciados são estes:
1. Com base no arquivo de dados acima, criar um array com 3 colunas, pegando um nome e dois campos numéricos do tipo flutuante (com ponto).
Imprimir as 3 ultimas linhas, porém trocando o ponto por vírgula;
Não sei como aplicar os conceitos aqui.
2. Pegar todas as linhas que contenham NASSAU e último campo maior que 2.
O que eu fiz:
#!/usr/bin/awk -f
/NASSAU /{
FS= ","
row = $NF
if(row>=2){
print $0
}
}
3. Imprimir todos os "County" que possuam o "point_latitude" entre 29 e 31. Informar também quantos foram encontrados.
O que eu fiz:
#!/usr/bin/awk -f
/COUNTY /{
FS= ","
row = $NF
if(row>=29 && row<=31){
print $0
}
}
Para executar o awk, estou usando um arquivo .awk que contém o código que dei chmod +x.
Exemplo: ./atividade3.awk FL_insurance_sample.csv
Alguma luz ou um material para me basear? Obrigado!
Boa noite Venuziano,
A medida que eu encontrar a solução, vou postando.
Observação: O arquivo original tem terminação "CR", da "Apple", converta para unix.
1. Com base no arquivo de dados acima, criar um array com 3 colunas, pegando um nome e dois campos numéricos do tipo flutuante (com ponto).
Imprimir as 3 ultimas linhas, porém trocando o ponto por vírgula
2. Pegar todas as linhas que contenham NASSAU e último campo maior que 2.
awk -F"," '/NASSAU/ && $18>2 {print $0}' FL_insurance_sample_lxn.csv
3. Imprimir todos os "County" que possuam o "point_latitude" entre 29 e 31. Informar também quantos foram encontrados.
Mostra todos
awk -F"," '$14 <= 31 && $14 >= 29 {print $0}' FL_insurance_sample_lxn.csv
Quantidade
awk -F"," '$14 <= 31 && $14 >= 29 {print $0}' FL_insurance_sample_lxn.csv|awk -F "," 'END {print NR}'
Ou
awk -F"," '$14 <= 31 && $14 >= 29 {print $0}' FL_insurance_sample_lxn.csv|wc -l
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________