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

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

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


From: Marcelo F Andrade
Subject: Re: [shell-script] Re: especie de "if-then-else" com sed
Date: Thu, 2 Oct 2014 15:13:41 -0300

2014-10-01 15:24 GMT-03:00 Tiago Peczenyj address@hidden
[shell-script] <address@hidden>:
> sed não tem if-then-else. vc tem pattern matching.

Eu sei.  Por isso as aspas.

> o que vc pode fazer é usar o comando n para ir para a proxima linha e 
> interromper o fluxo do seu script
> sed -n '
> /padrao/ { ... ; n}
> # codigo do "else"
> '

Acho que entendi.  Vou tentar encaixar e ver se consigo aplicar no
meu código com um pouco mais de calma.


2014-10-02 9:24 GMT-03:00 address@hidden [shell-script]
<address@hidden>:
>
> Então vou me ater onde acho que posso dar uma contribuição mais efetiva, ou 
> seja awk, que nesse caso acredito possa dar uma estrutura mais limpa e 
> compreensível:
>
> iwlist wlan0 scan |
> awk '
>  BEGIN { autenticacao="WEP" }
>  /WPA Version/ { autenticacao = "WPA" }
>  /Encryption key/ { rede = ($0 ~ /:off/) ? "aberta" : "fechada" }
>  END {
>    print "Tipo de autenticação: ", autenticacao
>    if length(rede) print "Status da rede: ", rede
>  }
> '
> Isso ajuda?

Ajuda com certeza.  E tinha identificado a falta dos parênteses no
condicional também.

Reconheço que sou ignorante em awk, mas concordo que a implementação
neste caso ficou bem mais limpa que minha tentativa com sed.


2014-10-02 12:33 GMT-03:00 'Julio C. Neves' address@hidden
[shell-script] <address@hidden>:
> 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

Júlio, parece simples e elegante mas, se não perdi algo, está quase
correta pelo seguinte: eu não sei os nomes, quantidades ou características
das redes de antemão.  Podem aparecer mil redes wep e elas podem ter
quaisquer nomes.  E a ER para inserir uma linha depois do nome de uma
rede quando este estiver entre sozinho entre dois números me parece
possivel mas igualmente complicada.

Mas vou experimentar o xargs ou o paste com printf como sugeriste.


Galera, obrigado a todos pelas dicas.  À noite em casa com calma vou
experimentar cada uma das sugestões e aviso em breve dos resultados.

Atenciosamente.

-- 
MARCELO F ANDRADE | Belem, Amazonia, Brazil | http://about.me/mfandrade


reply via email to

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