terça-feira, 19 de abril de 2016

Fazendo join de arquivos texto

Vamos supor que você tenha dois arquivos como os listados abaixo

$ cat nomes.txt
nome:idade:endereco
renato:41:avenida tal
ricardo:40:rua tal
rodrigo:38:alameda tal
walter:35:chacara tal

$ cat cursos.txt
curso:nome
teste:pedro
oab:renato
lpi:ricardo
fisio:rodrigo

Agora precisamos juntar esses dois arquivos linha a linha de forma que cada pessoa esteja associada com o seu curso.  O comando join faz esse trabalho.

$ join nomes.txt cursos.txt -t: -1 1 -2 2
nome:idade:endereco:curso
renato:41:avenida tal:oab
ricardo:40:rua tal:lpi
rodrigo:38:alameda tal:fisio

Neste comando:

  • "-t:" diz que o separador de coluna é o caracter ":".
  • "-1 1" diz que no primeiro arquivo (-1) deverá ser usado o primeiro campo (1) como referência.
  • "-2 2" diz que no segundo arquivo (-2) o campo referência é o segundo (2).


Reparem que só são mostrados os registros que existem nos dois arquivos. A única exigência é que os arquivos estejam indexados pelo campo referência, algo que pode ser feito com o comando sort.