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

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

Re: [shell-script] especie de "if-then-else" com sed


From: Julio C. Neves
Subject: Re: [shell-script] especie de "if-then-else" com sed
Date: Thu, 2 Oct 2014 12:33:09 -0300

Fala Marcelo,
me parece que a sua dúvida é mais simples que imaginei. Vc pode resolver
isso com | xargs -L3, ou com | paste - - -, usando printf para formatar a
saída, ou usando a interface gay, digo, gui: ;) Experimente esse que fiz
com a saída do cmd que vc mandou, mas usando um sed para inserir traços
como caracteres "enche linquiça":

$ echo '48/70
open
WifiAberta
20/70
WifiWEP
32/70
wpa1
WifiWPA' | sed '/WifiWEP/i\-------' | zenity --list --column Sinal --column
Estado --column Segurança

[image: Imagem inline 1]


Abcs,
Julio
*@juliobash*
*Próximos cursos de Shell*
*Cidade         Local Período*
*Rio de Janeiro EDX <http://edx.srv.br/> 10 a 14/11*
*São Paulo 4Linux
<http://www.4linux.com.br/cursos/programacao-em-shell-script> 24 a 28/11*
Dou treinamento de *Shell* em qualquer cidade.
Para mais detalhes, me mande um e-mail <address@hidden>.


Em 2 de outubro de 2014 10:17, Marcelo F Andrade address@hidden
[shell-script] <address@hidden> escreveu:

>
>
> 2014-10-01 17:14 GMT-03:00 Ronaldo Ferreira de Lima
> address@hidden [shell-script] <address@hidden>:
> > [...]
> > Achei a explicação um pouco confusa e incompleta, não há exemplos de
> > input e de output.
>
> Okay. Desculpe-me por isso. Tentei explicar de forma simples
> para não enviar um email longo e confuso. Serei mais didático
> e menos sintético desta vez. Vamos lá.
>
> A quem não conhece, quero tratar uma saída do iwlist como esta
> (mostrei apenas com as linhas relevantes):
>
> [code]
> # iwlist wlan0 scan
> Cell 01 ...
> Quality=48/70 Signal level=-64 dBm
> Encryption key:off
> ESSID:"WifiAberta"
> ...
> Cell 02 ...
> Quality=20/70 Signal level=-90 dBm
> Encryption key:on
> ESSID:"WifiWEP"
> ...
> Cell 03 ...
> Quality=32/70 Signal level=-84 dBm
> Encryption key:on
> ESSID:"WifiWPA"
> ...
> IE: WPA Version 1
> ...
> [/code]
>
> Minha intenção é associar ao evento da tecla do wifi do meu
> notebook com acpi um script que liste quais as redes sem-fio
> estão disponíveis. Por exemplo, mostrando o essid, a qualidade
> e o tipo de autenticação, se há.
>
> Para isso comecei a fazer o seguinte (parece medonho, eu sei,
> mas com um pouco de atenção dá pra entender):
> [code]
> # iwlist wlan0 scan | grep -Eo
> '(ESSID:".+"|Quality=[0-9]{,2}/[0-9]{2}|Encryption key:(on|off)|WPA
> Version (1|2))' \
> | sed -nr 's/^ESSID:"(.+)"$/\1/p;
> s/^Quality=([0-9]{1,2}\/70)$/\1/p;s/^Encryption key:off$/open/p;
> s/^WPA Version (1|2)/wpa\1/p' \
> > output
> 48/70
> open
> WifiAberta
> 20/70
> WifiWEP
> 32/70
> wpa1
> WifiWPA
> [/code]
>
> É por aí! Mas esse resultado seria mais legível num fomato
> tabular. No entanto, para casar legal, deveria ter 3 informações
> para cada rede wifi (da célula do meio só listou-se a qualidade
> e o essid). Gostaria de colocar nela um placeholder para indicar
> que a autenticação é WEP, para poder exibí-las em formato
> tabular, assim:
>
> [code]
> # vi output #incluí manualmente uma linha "wep" abaixo do 20/70
> # cat output | awk '{ ORS=(NR%3?FS:RS) }1'
> 48/70 open WifiAberta
> 20/70 wep WifiWEP
> 32/70 wpa1 WifiWPA
> [/code]
>
> Se eu aplicar esse awk com a saída original, como a célula 2
> só tem duas informações e estou agrupando os campos de
> três em três, todo o restante da saída fica desalinhado.
>
> A questão era como colocar um placeholder wep no script na
> situação acima (o "else" do não-casamento do padrão).
>
> BTW, se estiver num local onde só apareçam redes abertas
> ou com autenticação WPA, o script já funciona muito bem. :-)
>
> Explicou ou complicou?
>
> Atenciosamente.
>
> --
> MARCELO F ANDRADE | Belem, Amazonia, Brazil | http://about.me/mfandrade
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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