shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] AWK - Formatação de dados


From: Andre Lopes da Silva
Subject: Re: [shell-script] AWK - Formatação de dados
Date: Thu, 7 Dec 2017 13:05:59 -0200

Perdão pelo flood, Abaixo as imagens que queria anexar para o exemplo.

https://imgur.com/a/O6fht

> 
> Em Thu, 7 Dec 2017 12:07:18 -0200
> "Andre Lopes da Silva address@hidden [shell-script]"
> <address@hidden> escreveu:
> 
> > Huuum, eu acho que essa solução do Paulo resolve o fato de não
> > mostrar se não for MAC Address, mas ele acabará omitindo a
> > informação das linhas que não seriam MAC Address, o que pode ser
> > informação importante.
> > 
> > Eu percebi que suas linhas acabam quebrando por conta de terem
> > quantidades de espaços diferentes... pra ficar mais fácil de
> > visualizar isso, estou anexando um screenshot (Awkdesalinhado)
> > circulando pra você onde ocorre o problema... Note que pro seu caso,
> > Na primeira linha, a informação que você quer é a da casa "20" (já
> > que esse a informação " (oui Unknown) " aparece duas vezes e isso te
> > quebra a formatação acrescentando 4 campos antes da informação que
> > você precisa (por isso na primeira linha é 20).
> > 
> > Eu não sei te dizer como você vai fazer isso com AWK pois minha
> > experiência não me permite ainda... O que eu faria no meu pouco
> > conhecimento seria tentar tratar essa linha antes do awk para que os
> > "SA:ma:ca:dd:re:ss:es" ficassem alinhados de alguma forma primeiro.
> > Eu chutaria que SED seria seu amigo nessa hora, pra "sumir" com
> > tudo o que fica entre "BSSID:" e "SA:" (Trocando todo esse miolo
> > por "SA:"), o que te resultaria com o SA:macaddress" na casa "13"
> > pro AWK.
> > 
> > Me corrijam pq posso estar errado, mas algo tipo "sed
> > 's/BSSID.*SA/SA/'" resolveria?
> > 
> > Se for isso, fazer um
> > 
> > "sed 's/BSSID.*SA/SA/' unknown.txt | awk 'gsub("SA:|dB","") {print
> > $1","$14","$10","$2}'"
> > 
> > OBS: Note que não é mais "1, 16, 10, 2", virou "1, 14, 10, 2"
> > 
> > Do mesmo modo que essa linha ficou desalinhada, é bom você ver se
> > não tem outros casos de "desalinhamento" no teu arquivo antes de
> > brincar de achar linhas e colunas com awk, pra não te dar xabú,
> > heheheh
> > 
> > Abraços
> > 
> > 
> > 
> > 
> > Em Wed, 6 Dec 2017 19:52:09 -0200
> > "address@hidden [shell-script]"
> > <address@hidden> escreveu:
> > 
> > > Olá andrelucio, teste o campo do mac, se é realmente um mac.
> > > 
> > > awk 'gsub("SA:|dB","") {if ( $16
> > > ~ /^([a-f0-9]{2}:){5}[a-f0-9]{2}$/ ) print $1","$16","$10","$2}'
> > > unknow.txt
> > > 
> > > Abraços Paulo
> > > 
> > > On 06-12-2017 18:46, address@hidden [shell-script]
> > > wrote:  
> > > > Opa, pessoal.
> > > > 
> > > > 
> > > > Estou com a seguinte demanda. Eu tenho um arquivo que me envia a
> > > > saída abaixo:
> > > > 
> > > > 
> > > > city-country-1 17:38:29.291991 26205766340us tsft 1.0 Mb/s 2412
> > > > MHz 11b -84dB SIGNAL [bit 29] BSSID:4c:5e:0c:b9:69:59 (oui
> > > > Unknown) DA:4c:5e:0c:b9:69:59 (oui Unknown) SA:80:58:f8:81:29:89
> > > > (oui Unknown) Packet Request (Network) [1.0 2.0 5.5 11.0 Mbit]
> > > > 
> > > > city-country-2 17:38:33.183062 26209656603us tsft 1.0 Mb/s 2412
> > > > MHz 11b -79dB SIGNAL [bit 29] BSSID:Broadcast DA:Broadcast
> > > > SA:68:c4:4d:60:8d:48 (oui Unknown) Packet Request () [1.0 2.0
> > > > 5.5 11.0 Mbit]
> > > > 
> > > > city-country-3 17:00.22.183062 26209656603us tsft 1.0 Mb/s 2412
> > > > MHz 11b -79dB SIGNAL [bit 29] BSSID:Broadcast DA:Broadcast
> > > > SA:67:c4:d5:60:8f:38 (oui Unknown) Packet Request () [1.0 2.0
> > > > 5.5 11.0 Mbit]
> > > > 
> > > > 
> > > > E extraio os dados abaixo com o seguinte comando:
> > > > 
> > > > 
> > > > awk 'gsub("SA:|dB","") {print $1","$16","$10","$2}' unknow.txt
> > > > 
> > > > 
> > > > city-country-1,Unknown),-84,17:38:29.291991
> > > > 
> > > > city-country-2,68:c4:4d:60:8d:48,-79,17:38:33.183062
> > > > 
> > > > city-country-3,67:c4:d5:60:8f:38,-79,17:00.22.183062
> > > > 
> > > > 
> > > > O problema é que no campo 16, eu preciso que somente venha o
> > > > MAC, e que não aparece  um resultado diferente, como o Unknown)
> > > > na saída acima. Preciso que saia dessa forma:
> > > > 
> > > > 
> > > > city-country-2,68:c4:4d:60:8d:48,-79,17:38:33.183062
> > > > 
> > > > city-country-3,67:c4:d5:60:8f:38,-79,17:00.22.183062
> > > > 
> > > > 
> > > > Ps: Preciso que seja feito através do awk.
> > > > 
> > > > 
> > > > 
> > > > Agradeço a ajuda.
> > > > 
> > > > 
> > > > 
> > > > --------------------------------------------------------------------------------------------------------------
> > > > Enviado por: address@hidden
> > > > --------------------------------------------------------------------------------------------------------------
> > > > Responder através da web     
> > 
> > 
> 
> 


-- 
Andre Lopes da Silva
Técnico em Informática
SI - IME-USP
3091-9891
Sala 131-A

Enviado utilizando Claws Mail
OpenSUSE LEAP 42.3


reply via email to

[Prev in Thread] Current Thread [Next in Thread]