Linux slogan
Visite também: BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Kurumin + Fluxbox + Vmware + Windows 2003
Por Ale_
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

O comando join
Linux user
Publicado por KYETOY em 31/05/2005

Login: kyetoy, 941844 pontos
[ Hits: 15777 ]

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 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


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Aprenda a usar o Scrot (captura de tela)
   Dica Linux recomendada Encontrando documentação de comandos no seu próprio Linux
   Dica Linux recomendada O comando more
   Dica Linux recomendada Coleções de softwares pré-definidas do Ubuntu
   Dica Linux recomendada O comando tail

Comentários
[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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.