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: Jonathan Lessa
Subject: Re: [shell-script] Dúvida com SED
Date: Thu, 6 Dec 2012 18:46:17 -0300

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]



reply via email to

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