Pular para o conteúdo

O comando join

Dica publicada em Linux / Comandos
Perfil removido removido
Hits: 32.767 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

O comando join

join [opções] [arquivo1][arquivo2]

O comando join (unir) concatena registros de dois arquivos de texto baseado em índices comuns entre os registros. O comando funciona como um tipo de banco de dados primitivo, permitindo a montagem de novos arquivos de registros a partir de registros existentes em diferentes arquivos. Somente dois arquivos podem ser relacionados de cada vez. Os arquivos devem estar ordenados em ordem crescente pelo índice. Preferencialmente utilize índices numéricos, índices alfanuméricos também são aceitos.

[arquivo1][arquivo2]
Os arquivos cujos conteúdos serão relacionados. Os arquivos devem ser referenciados como arquivo 1 e arquivo 2. Assim é possível determinar sobre qual campo o comando atuará. Abaixo um exemplo da estrutura de dois arquivos de registros. Neste caso o separador de campos será o caractere dois-pontos (:), apenas para facilitar o exemplo.

O conteúdo de Arquivo1.txt: (este será o arquivo 1)

001:Belo Horizonte:Média....................(uma linha representa um registro completo)
002:São Paulo:Enorme .......................(uma coluna é um campo)
003:Rio de Janeiro:Grande...................(entre as colunas deve existir um separador de campos)
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

O conteúdo de Arquivo2.txt: (Este será o arquivo 2)

001:Minas Gerais:MG......(A referência a um campo é feita na forma A.C Arquivo.Campo)
002:São Paulo:SP...........(Os campos deste arquivo são: 2.1, 2.2, 2.3)
003:Rio de janeiro:RJ
004:Espírito Santo:ES

[-opções] - pode ser igual a:
-o A.C,A.C., monta os registros na saída padrão de acordo com a ordem determinada por A.C onde A é o número do arquivo e C é a posição do campo no arquivo. Os campos A.C são separados por uma vírgula. Por exemplo, o comando abaixo aplicado em Arquivo1.txt e Arquivo2.txt gera esta saída:

# join -t: -o 1.1,1.2,2.3 Arquivo1.txt Arquivo2.txt
001:Belo Horizonte:MG
002:São Paulo:SP
003:Rio de Janeiro:RJ

1.2 é um campo que vem do arquivo 1 enquanto 2.3 é um campo que vem do arquivo 2. O índice (1.1) pode ser fornecido por qualquer um dos arquivos já que são idênticos. Observe que os arquivos estão ordenados (pelo índice) que também relaciona os registros dos dois arquivos, funcionando como uma chave primária (primary key). Chaves primárias devem ser únicas em cada arquivo e devem ter outra chave correspondente no outro arquivo. Caso não exista a chave correspondente o registro está órfão. A estrutura do registro em Arquivo1.txt é composta por três campos. O primeiro campo é o índice, o segundo campo o nome da cidade e o terceiro campo é o tamanho da cidade. Cada linha do arquivo forma um registro e cada registro em arquivo 1 pode ou não ter um correspondente em arquivo 2. A ausência de um registro correspondente não inválida os arquivos para serem usados por join.

Deste modo, a referência A.C (arquivo.campo) pode ser estabelecida. Por exemplo, caso A.C seja 2.2 a referência aponta para o arquivo 2 e para o campo dois. Neste caso, 2.2 é o nome do estado, 2.3 aponta para as siglas e 2.1 é o índice.

-t separador, especifica o separador de campos.

# join -t: Arquivo1.txt Arquivo2.txt
001:Belo Horizonte:Média:Minas Gerais:MG
002:São Paulo:Enorme:São Paulo:SP
003:Rio de Janeiro:Grande:Rio de janeiro:RJ

-v arquivo, exibe as linhas de arquivo que estão sem correspondente no outro arquivo. Serve para detectar registros órfãos.

# join -t: -v2 Arquivo1.txt Arquivo2.txt
004:Espírito Santo:ES

-a N, exibe as linhas do arquivo N mesmo que não tenham sido combinadas.

# join -a2 Arquivo1.txt Arquivo2.txt
001:Belo Horizonte:Média:Belo Horizonte:MG
002:São Paulo:Enorme:São Paulo:SP
003:Rio de Janeiro:Grande:3:Rio de janeiro:RJ
004:Espírito Santo:ES......................................(Esta linha é órfã)

Isto é tudo.

T+

Unasi

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Reexecutando comandos do console

Descubra se um pacote de software existe nos repositórios de sua distribuição

O que fazer após instalar LMDE 3

Usando dois ambientes gráficos no Ubuntu: Gnome e KDE

Gnash - flash player open source

Usando alias no Terminal para comandos longos

Rodando o Free Tennis

Comando dd para Iniciantes

Gerando senhas aleatórias alfanuméricas

Usando o mailx

#1 Comentário enviado por aluxbruno em 05/02/2011 - 23:51h
parceiro isso contribuiu pra mim bastante eu tenho o objetivo em tirar minha lpi mais tem alguns comando que eu não lembro mais vlw muito me ajudou bastante
#2 Comentário enviado por Cabeça de Teia em 24/05/2011 - 15:23h
Muito Nolinux, ótimo artigo, vc consegui exclarecer muita dúvidas minhas referentes a esse comando de maneira simples, rápida e objetiva. Meus párabéns!
#3 Comentário enviado por edertux em 16/11/2011 - 17:33h
Excelente Nolinux!
Sua dica foi mais esclarecedora do que conteúdo que consta no livro preparatório para LPI que tenho aqui, e mais completa do que conteúdo da apostila da 4Linux também.
Me ajudou muito... Parabéns!
Um abraço.

PS: Esta dica foi postada em 2005 porém, considerando apenas o reconhecimento, ajudou a 3 pessoas 6 anos depois. #vivaainternet \õ/
#4 Comentário enviado por edertux em 16/11/2011 - 17:50h
Ah, um detalhe:

No último bloco...

# join -a2 Arquivo1.txt Arquivo2.txt
001:Belo Horizonte:Média:Belo Horizonte:MG
002:São Paulo:Enorme:São Paulo:SP
003:Rio de Janeiro:Grande:3:Rio de janeiro:RJ
004:Espírito Santo:ES......................................(Esta linha é órfã)

...faltou a opção "-t:", que corrigindo fica assim:

# join -t: -a2 Arquivo1.txt Arquivo2.txt
001:Belo Horizonte:Média:Belo Horizonte:MG
002:São Paulo:Enorme:São Paulo:SP
003:Rio de Janeiro:Grande:3:Rio de janeiro:RJ
004:Espírito Santo:ES......................................(Esta linha é órfã)

Falows galera! ;-)
#5 Comentário enviado por azraelm em 12/12/2011 - 17:10h
Valeu!!!!
Ajudou muito!!!! \o

Contribuir com comentário

Entre na sua conta para comentar.