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

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

Dúvida com SED


From: Alfredo Casanova
Subject: Dúvida com SED
Date: Thu, 6 Dec 2012 19:16:42 -0200

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]



reply via email to

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