Atividades com AWK

1. Atividades com AWK

Rafael Rodrigues
venuziano

(usa Outra)

Enviado em 31/03/2020 - 19:28h

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!




  


2. Re: Atividades com AWK

Marcelo Oliver
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
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts