[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]
- Dúvida com SED,
Alfredo Casanova <=