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

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

Re: [shell-script] Dúvida com SED


From: Alfredo Casanova
Subject: Re: [shell-script] Dúvida com SED
Date: Thu, 6 Dec 2012 19:55:52 -0200

Seu script resolve, apesar de eu precisar de algumas modificações, porque
os números podem aparecer em nomes de servidor e eu nao quero essas linhas
alteradas, então tenho q colocar na regex... também dá pau pq o arquivo tem
algumas linhas em branco, aí ele bagunça o grep!

Mas a saída foi boa



2012/12/6 Alfredo Casanova <address@hidden>

> boa solução, jonathan... eu cheguei a pensar em faze-la... mas fiquei
> curioso demais no motivo de o sed não estar funcionando!
>
>
> 2012/12/6 Jonathan Lessa <address@hidden>
>
>> Segue teste:
>>
>> [jonathan@cedro jonathan]$ cat cdsugs
>> 00006 TESTE1
>> 00007 TESTE2
>> 00008 TESTE3
>> 00009 TESTE4
>>
>> [jonathan@cedro jonathan]$ cat codserv
>> h_00006_asdasd
>> h_00007_efg
>> h_00009_bcde
>> h_00008_asdr
>> h_00006_xz
>> h_00008_yz
>>
>> [jonathan@cedro jonathan]$ while read linha; do echo $linha $(grep
>> "$(echo
>> $linha | cut -d_ -f2)" cdsugs | cut -d" " -f2); done < codserv
>> h_00006_asdasd TESTE1
>> h_00007_efg TESTE2
>> h_00009_bcde TESTE4
>> h_00008_asdr TESTE3
>> h_00006_xz TESTE1
>> h_00008_yz TESTE3
>>
>>
>>
>> Em 6 de dezembro de 2012 18:16, Alfredo Casanova <address@hidden
>> >escreveu:
>>
>> > **
>> >
>> >
>> > Apesar de aberto a outras sugestões que não utilizem o sed :)
>> >
>> > tenho 2 listas (as listas são gigantescas, fiz versões menores para
>> deixar
>> > o problema mais claro)
>> >
>> > $ cat cdsugs
>> > 00006 TESTE1
>> > 00007 TESTE2
>> > 00008 TESTE3
>> > 00009 TESTE4
>> >
>> > $ cat codserv
>> > > SERVERXXX tem os seguintes codigos:
>> > h_00006_asdasd
>> > h_00007_efg
>> > h_00009_bcde
>> > h_00008_asdr
>> > h_00006_xz
>> > h_00008_yz
>> >
>> > preciso usar o código numérico da primeira coluna do arquivo cdsugs para
>> > dar match no que está entre os underscores no arquivo codserv, para
>> depois
>> > imprimir o que está na segunda coluna no arquivo cdsugs ao final das
>> linhas
>> > correspondentes. Ficou confuso?
>> > Em resumo o meu output deve ser esse:
>> >
>> > > SERVERXXX tem os seguintes codigos:
>> > h_00006_asdasd TESTE1
>> > h_00007_efg TESTE2
>> > h_00009_bcde TESTE4
>> > h_00008_asdr TESTE3
>> > h_00006_xz TESTE1
>> > h_00008_yz TESTE3
>> >
>> > ficou claro?
>> >
>> > na teoria o seguinte comando deveria resolver:
>> >
>> > sed '/.*_00006_.*/s,$, TESTE1,' codserv
>> > > SERVERXXX tem os seguintes codigos:
>> > h_00006_asdasd TESTE1
>> > h_00007_efg
>> > h_00009_bcde
>> > h_00008_asdr
>> > h_00006_xz TESTE1
>> > h_00008_yz
>> >
>> > bastando fazer um "while read line" e jogando as variáveis, certo?
>> > errado!
>> >
>> > $ id=00006
>> > $ string=TESTE1
>> > $ sed '/.*_$id_.*/s,$, $string,' codserv
>> > > SERVERXXX tem os seguintes codigos:
>> > h_00006_asdasd
>> > h_00007_efg
>> > h_00009_bcde
>> > h_00008_asdr
>> > h_00006_xz
>> >
>> > simplesmente não funciona.
>> > Tentei dar um "eval" antes e também não consegui. Delimitando as
>> variáveis
>> > com {} também não ajudou.
>> >
>> > meu script que não funcionou é o seguinte:
>> >
>> > #!/bin/bash
>> > while read line
>> > do
>> > id=$(echo $line | cut -f1 -d" ")
>> > SUP=$(echo $line | cut -f2 -d" ")
>> > sed -i '/.*_${id}_.*/s,$, $SUP,' codserv
>> > done < cdsugs
>> >
>> > sei que deve ser algum erro "conceitual", sobre como o bash ou o sed
>> > interpreta as variáveis... mas não consegui identificar
>> >
>> > --
>> > []'s
>> > Alfredo Casanova
>> > Linux User #228230
>> > msn: address@hidden
>> > tel: +55 61 9655 9619
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> >
>> >
>>
>>
>>
>> --
>> Att.:
>> Jonathan Lessa
>>
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>> ------------------------------------
>>
>> ---------------------------------------------------------------------
>> Esta lista não admite a abordagem de outras liguagens de programação,
>> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>> prévio aviso.
>> ---------------------------------------------------------------------
>> Sair da lista: address@hidden
>> ---------------------------------------------------------------------
>> Esta lista é moderada de acordo com o previsto em
>> http://www.listas-discussao.cjb.net
>> ---------------------------------------------------------------------
>> Servidor Newsgroup da lista: news.gmane.org
>> Grupo: gmane.org.user-groups.programming.shell.brazil
>>
>> Links do Yahoo! Grupos
>>
>>
>>
>
>
> --
> []'s
> Alfredo Casanova
> Linux User #228230
> msn: address@hidden
> tel: +55 61 9655 9619
>
>


-- 
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619


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



reply via email to

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