Pesquisar um arquivo linha por linha para preencher outro arquivo [RESOLVIDO]

1. Pesquisar um arquivo linha por linha para preencher outro arquivo [RESOLVIDO]

OffHome
OffHome

(usa Ubuntu)

Enviado em 08/08/2016 - 21:30h

Tenho dois arquivos: fruta.txt e frutaC.txt. No arquivo fruta.txt tenho uma fruta em cada linha e as frutas se repetem (e devem se repetir mesmo). No arquivo frutaC.txt tenho as mesmas frutas (sem repetir) com outras informações. Quero pesquisar o arquivo frutaC.txt (que tem mais informações) e preencher os campos faltantes no arquivo fruta.txt. Fiz um script, usando SED, mas está dando muuuuito errado. Seguem o esqueleto do script e os arquivos fruta.txt e frutaC.txt e o ResultadoEsperado.txt. Aguardo sugestões.
Grato

PS: já li vários tutoriais sobre SED. Incluindo as publicacões do Aurelio Jargas, o Só SED - Thobias e Comandos de 1 linha para o SED, mas ainda não deu certo.

O script

#!/bin/bash

for i in `cat fruta.txt`
do
for j in `cat frutaC.txt | cut -d, -f1`
do
if [ $i==$j ]; then
sed '/$i/s/$i/$j/g' fruta.txt >> ResultadoEsperado.txt
fi

done
done

fruta.txt
laranja
banana
uva
laranja
banana
banana
uva

frutaC.txt
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20

ResultadoEsperado.txt

laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/08/2016 - 21:56h

OffHome escreveu:

Tenho dois arquivos: fruta.txt e frutaC.txt. No arquivo fruta.txt tenho uma fruta em cada linha e as frutas se repetem (e devem se repetir mesmo). No arquivo frutaC.txt tenho as mesmas frutas (sem repetir) com outras informações. Quero pesquisar o arquivo frutaC.txt (que tem mais informações) e preencher os campos faltantes no arquivo fruta.txt. Fiz um script, usando SED, mas está dando muuuuito errado. Seguem o esqueleto do script e os arquivos fruta.txt e frutaC.txt e o ResultadoEsperado.txt. Aguardo sugestões.
Grato

PS: já li vários tutoriais sobre SED. Incluindo as publicacões do Aurelio Jargas, o Só SED - Thobias e Comandos de 1 linha para o SED, mas ainda não deu certo.

O script

#!/bin/bash

for i in `cat fruta.txt`
do
for j in `cat frutaC.txt | cut -d, -f1`
do
if [ $i==$j ]; then
sed '/$i/s/$i/$j/g' fruta.txt >> ResultadoEsperado.txt
fi

done
done

fruta.txt
laranja
banana
uva
laranja
banana
banana
uva

frutaC.txt
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20

ResultadoEsperado.txt

laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20


------------------------------------------------------------
Boa noite OffHome.
Segue sugestão?


while read -r LINE;do
egrep "^$LINE" FRUTA_C.txt >> ResultadoEsperado.txt
done<FRUTA.txt


É isso....

Se a resposta lhe ajudou, retribua, marcando-a como A MELHOR . . .

Att.:
Marcelo Oliver


3. Solução perfeita

OffHome
OffHome

(usa Ubuntu)

Enviado em 08/08/2016 - 22:22h

msoliver escreveu:

OffHome escreveu:

Tenho dois arquivos: fruta.txt e frutaC.txt. No arquivo fruta.txt tenho uma fruta em cada linha e as frutas se repetem (e devem se repetir mesmo). No arquivo frutaC.txt tenho as mesmas frutas (sem repetir) com outras informações. Quero pesquisar o arquivo frutaC.txt (que tem mais informações) e preencher os campos faltantes no arquivo fruta.txt. Fiz um script, usando SED, mas está dando muuuuito errado. Seguem o esqueleto do script e os arquivos fruta.txt e frutaC.txt e o ResultadoEsperado.txt. Aguardo sugestões.
Grato

PS: já li vários tutoriais sobre SED. Incluindo as publicacões do Aurelio Jargas, o Só SED - Thobias e Comandos de 1 linha para o SED, mas ainda não deu certo.

O script

#!/bin/bash

for i in `cat fruta.txt`
do
for j in `cat frutaC.txt | cut -d, -f1`
do
if [ $i==$j ]; then
sed '/$i/s/$i/$j/g' fruta.txt >> ResultadoEsperado.txt
fi

done
done

fruta.txt
laranja
banana
uva
laranja
banana
banana
uva

frutaC.txt
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20

ResultadoEsperado.txt

laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20


------------------------------------------------------------
Boa noite OffHome.
Segue sugestão?


while read -r LINE;do
egrep "^$LINE" FRUTA_C.txt >> ResultadoEsperado.txt
done<FRUTA.txt


É isso....

Se a resposta lhe ajudou, retribua, marcando-a como A MELHOR . . .

Att.:
Marcelo Oliver

Obrigado, Marcelo Oliver, sua solução foi perfeita! Era exatamente o que eu estava procurando.


4. Re: Pesquisar um arquivo linha por linha para preencher outro arquivo [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/08/2016 - 23:32h

OffHome escreveu:

msoliver escreveu:

OffHome escreveu:

Tenho dois arquivos: fruta.txt e frutaC.txt. No arquivo fruta.txt tenho uma fruta em cada linha e as frutas se repetem (e devem se repetir mesmo). No arquivo frutaC.txt tenho as mesmas frutas (sem repetir) com outras informações. Quero pesquisar o arquivo frutaC.txt (que tem mais informações) e preencher os campos faltantes no arquivo fruta.txt. Fiz um script, usando SED, mas está dando muuuuito errado. Seguem o esqueleto do script e os arquivos fruta.txt e frutaC.txt e o ResultadoEsperado.txt. Aguardo sugestões.
Grato

PS: já li vários tutoriais sobre SED. Incluindo as publicacões do Aurelio Jargas, o Só SED - Thobias e Comandos de 1 linha para o SED, mas ainda não deu certo.

O script

#!/bin/bash

for i in `cat fruta.txt`
do
for j in `cat frutaC.txt | cut -d, -f1`
do
if [ $i==$j ]; then
sed '/$i/s/$i/$j/g' fruta.txt >> ResultadoEsperado.txt
fi

done
done

fruta.txt
laranja
banana
uva
laranja
banana
banana
uva

frutaC.txt
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20

ResultadoEsperado.txt

laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20
laranja,2016-04-01 23:38:46,mercadoA,3.00
banana,2016-04-01 23:06:13, mercadoB, 3.50
banana,2016-04-01 23:06:13, mercadoB, 3.50
uva,2016-04-01 23:06:13, mercadoA, 3,20


------------------------------------------------------------
Boa noite OffHome.
Segue sugestão?


while read -r LINE;do
egrep "^$LINE" FRUTA_C.txt >> ResultadoEsperado.txt
done<FRUTA.txt


É isso....

Se a resposta lhe ajudou, retribua, marcando-a como A MELHOR . . .

Att.:
Marcelo Oliver

Obrigado, Marcelo Oliver, sua solução foi perfeita! Era exatamente o que eu estava procurando.


--------------------------------------------------------------------------------------------------------------------------------------
Por nada.
Só faltou marcar como a melhor resposta . . .

att.:
marcelo oliver








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts