h1

join – Concatenador de linhas

Abril 25, 2008

O Comando join do linux, junta (join =) as linhas de dois arquivos que tenham um campo em comum. 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.

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

Opções mais comuns:

-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

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.
-t [CHAR]
Modifica o separador padrão para o especificado.
Exemplo:
# join -t, arquivo1.txt arquivo2.txt

-v [arquivo]
Exibe as linhas de um arquivo que estão sem correspondente em outro arquivo. Ótimo para achar registros órfãos.
Exemplo:
# join -v2 arquivo1.txt arquivo2.txt

-a [numero do arquivo]
Exibe as linhas do arquivo mesmo que não tenham sido combinada.
Exemplo:
# join -a1 arquivo1.txt arquivo2.txt

Deixe um comentário