O comando join
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 12 de janeiro de 2025
Fonte: https://www.dicas-l.com.br/
O comando join no Linux é uma ferramenta poderosa para combinar linhas de dois arquivos com base em um campo comum. É particularmente útil quando você precisa mesclar dados de diferentes fontes.
A sintaxe básica do comando é:
$ join [OPÇÕES] ARQUIVO1 ARQUIVO2
O join funciona comparando os campos especificados em ambos os arquivos e, quando encontra uma correspondência, combina as linhas dos dois arquivos. Por padrão, ele usa o primeiro campo de cada arquivo como chave de junção.
É importante notar que, para o join funcionar corretamente, os arquivos devem estar ordenados pelo campo de junção. Vamos explorar alguns exemplos práticos para entender melhor como o join funciona.
Imagine que temos dois arquivos: funcionarios.txt e salarios.txt.
O arquivo funcionarios.txt contém:
1 João
2 Maria
3 Pedro
E o arquivo salarios.txt contém:
1 3500
2 4000
3 3800
Para juntar estes arquivos, usamos o comando:
$ join funcionarios.txt salarios.txt
O resultado será:
1 João 3500
2 Maria 4000
3 Pedro 3800
Agora, vamos considerar um cenário onde o campo de junção não é o primeiro. Temos um arquivo departamentos.txt:
RH 1 João
TI 2 Maria
MKT 3 Pedro
Para juntar este arquivo com salarios.txt, usamos:
$ join -1 2 -2 1 departamentos.txt salarios.txt
O resultado será:
1 RH João 3500
2 TI Maria 4000
3 MKT Pedro 3800
O join também permite incluir linhas que não têm correspondência. Imagine que temos um arquivo funcionarios_extra.txt:
1 João
2 Maria
3 Pedro
4 Ana
Para incluir todos os funcionários, mesmo os sem salário, usamos:
$ join -a 1 funcionarios_extra.txt salarios.txt
O resultado será:
1 Joãoo 3500
2 Maria 4000
3 Pedro 3800
4 Ana
Podemos também formatar a saída do join. Por exemplo:
$ join -o 1.2,2.2,1.1 funcionarios.txt salarios.txt
Isso resultará em:
João 3500 1
Maria 4000 2
Pedro 3800 3
O join também pode ignorar diferenças de maiúsculas e minúsculas. Se tivermos um arquivo nomes.txt:
1 JOÃO
2 MARIA
3 PEDRO
Podemos usar:
$ join -i nomes.txt salarios.txt
E o resultado será:
1 JOÃO 3500
2 MARIA 4000
3 PEDRO 3800
Algumas dicas adicionais: se os arquivos não estiverem ordenados, você pode usar o comando sort antes do join.
Por exemplo:
$ join <(sort funcionarios.txt) <(sort salarios.txt)
Para juntar múltiplos arquivos, você pode usar o join em cascata:
$ join funcionarios.txt salarios.txt | join - departamentos.txt
E se seus arquivos usarem um delimitador diferente, como vírgulas em arquivos CSV, você pode especificar isso com a opção -t:
$ join -t, funcionarios.csv salarios.csv
O comando join é uma ferramenta versátil para combinar dados de diferentes arquivos no Linux. Com prática, você pode usá-lo para realizar operações complexas de mesclagem de dados diretamente no terminal. Lembre-se sempre de verificar se os arquivos estão ordenados corretamente pelo campo de junção antes de usar o join, para garantir resultados precisos e evitar problemas comuns.