De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 12 de janeiro de 2025
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.