Eu tenho dois arquivos. Arquivo1 é um csv com 60 campos:
111,Check1|^/h1/h2/h3,22062014184500,20,0.....
111,Check2|^/h43/h40/h9,22062014184500,4,.....
111,Check3|^/h1/h3/h4,22062014184500,0,0,.....
Arquivo2 é um arquivo de mapeamento:
OPUM04181,Check1|^/h1/h2/h3
OPUM04040235,Check3|^/h1/h3/h4
OPUM04051898,Check2|^/h43/h40/h9
Agora o que eu tenho que fazer é no campo 2 do arquivo 1 eu tenho que substituir o campo com o campo 1 do arquivo 1 do campo correspondente 2. Exemplo:
Agora, o que tenho que fazer é substituir o campo 2 do arquivo1 pelo campo 1 da linha no campo de correspondência do arquivo2 2. Exemplo:
no arquivo1:
111,Check1|^/h1/h2/h3,22062014184500,20,0.....
será
111,OPUM04181,22062014184500,20,0.....
em que OPUM04181
↔ Check1|^/h1/h2/h3
está mapeado no arquivo2.
Minha restrição é que o arquivo1 e o arquivo2 não têm o mesmo conjunto de valores; sua contagem é diferente. Além disso, a contagem de linhas é de 3 milhões para os dois arquivos.
Isso é o que eu estava tentando:
- Eu executei um loop tomando o campo 2 no arquivo1
- Eu estava verificando se esse campo está presente no arquivo2.
- Se presente, peguei o campo 1 no arquivo2.
- Eu estava substituindo o campo2 no arquivo1 usando
sed s///g
. Mas isso está levando uma quantidade enorme de tempo.
Além disso, não consigo classificar o arquivo1.
O que é um método mais rápido?