<Anterior | Conteúdo | Próxima>
juntar
Em algumas formas, juntar é como colar no sentido de que adiciona colunas a um arquivo, mas usa uma maneira única de fazer isso. UMA juntar é uma operação geralmente associada a bancos de dados relacionais onde dados de múltiplos tabelas com um campo de chave compartilhada é combinado para formar o resultado desejado.
O juntar programa executa a mesma operação. Ele reúne dados de vários arquivos com base em um campo de chave compartilhado.
Para ver como uma operação de junção é usada em um banco de dados relacional, vamos imaginar um banco de dados muito pequeno que consiste em duas tabelas, cada uma contendo um único registro. A primeira tabela, chamada CUSTOMERS, tem três campos: um número de cliente (CUSTNUM), o nome do cliente (FNAME) e o sobrenome do cliente (LNAME):
PERSONALIZADO | NOME | LNAME |
======== | ===== | ====== |
4681934 | banheiro | Smith |
A segunda tabela é chamada de PEDIDOS e contém quatro campos: um número de pedido (PEDIDO), o número do cliente (CUSTNUM), a quantidade (QUAN) e o item pedido (ITEM).
PEDIDO | PERSONALIZADO | QUAN | ITEM |
======== | ======= | ==== | ==== |
3014953305 | 4681934 | 1 | Widget Azul |
Observe que ambas as tabelas compartilham o campo CUSTNUM. Isso é importante, pois permite uma relação entre as tabelas.
A execução de uma operação de junção nos permitiria combinar os campos nas duas tabelas para obter um resultado útil, como preparar uma fatura. Usando os valores correspondentes nos campos CUSTNUM de ambas as tabelas, uma operação de junção pode produzir o seguinte:
NOME | LNAME | QUAN | ITEM |
===== | ===== | ==== | ==== |
banheiro | Smith | 1 | Widget Azul |
Para demonstrar o juntar programa, vamos precisar fazer alguns arquivos com uma chave compartilhada. Para fazer isso, vamos usar nosso distribuições por data.txt Arquivo. A partir desse arquivo, construiremos dois arquivos adicionais, um contendo as datas de lançamento (que será nossa chave compartilhada para esta demonstração) e os nomes de lançamento:
[me @ linuxbox ~] $ cut -f 1,1 distros-by-date.txt> distros-names.txt [me @ linuxbox ~] $ cole distros-datas.txt distros-names.txt> distros- key-names.txt
[me @ linuxbox ~] $ head distros-key-names.txt
11/25/2008 Fedora 10/30/2008 Ubuntu 06/19/2008 SUSE
05/13/2008 Fedora 04/24/2008 Ubuntu 11/08/2007 Fedora 10/18/2007 Ubuntu
[me @ linuxbox ~] $ cut -f 1,1 distros-by-date.txt> distros-names.txt [me @ linuxbox ~] $ cole distros-datas.txt distros-names.txt> distros- key-names.txt
[me @ linuxbox ~] $ head distros-key-names.txt
11/25/2008 Fedora 10/30/2008 Ubuntu 06/19/2008 SUSE
05/13/2008 Fedora 04/24/2008 Ubuntu 11/08/2007 Fedora 10/18/2007 Ubuntu
10/04/2007 SUSE
05/31/2007 Fedora 04/19/2007 Ubuntu
10/04/2007 SUSE
05/31/2007 Fedora 04/19/2007 Ubuntu
e o segundo arquivo, que contém as datas de lançamento e os números da versão:
[me @ linuxbox ~] $ cut -f 2,2 distros-by-date.txt> distros-vernums.txt [me @ linuxbox ~] $ cole distros-datas.txt distros-vernums.txt> distro s-key-vernums.txt
[me @ linuxbox | ~] $ cabeça distros-key-vernums.txt |
11/25/2008 | 10 |
10/30/2008 | 8.10 |
06/19/2008 | 11.0 |
05/13/2008 | 9 |
04/24/2008 | 8.04 |
11/08/2007 | 8 |
10/18/2007 | 7.10 |
10/04/2007 | 10.3 |
05/31/2007 | 7 |
04/19/2007 | 7.04 |
Agora temos dois arquivos com uma chave compartilhada (o campo “data de lançamento”). É importante ressaltar que os arquivos devem ser classificados no campo chave para juntar para funcionar corretamente.
[me @ linuxbox ~] $ join distros-key-names.txt distros-key-vernums.txt | cabeça
11/25/2008 Fedora 10
10/30/2008 Ubuntu 8.10
06/19/2008 SUSE 11.0
05/13/2008 Fedora 9
04/24/2008 Ubuntu 8.04
11/08/2007 Fedora 8
10/18/2007 Ubuntu 7.10
10/04/2007 SUSE 10.3
05/31/2007 Fedora 7
04/19/2007 Ubuntu 7.04
[me @ linuxbox ~] $ join distros-key-names.txt distros-key-vernums.txt | cabeça
11/25/2008 Fedora 10
10/30/2008 Ubuntu 8.10
06/19/2008 SUSE 11.0
05/13/2008 Fedora 9
04/24/2008 Ubuntu 8.04
11/08/2007 Fedora 8
10/18/2007 Ubuntu 7.10
10/04/2007 SUSE 10.3
05/31/2007 Fedora 7
04/19/2007 Ubuntu 7.04
Observe também que, por padrão, juntar usa espaços em branco como delimitador do campo de entrada e um único espaço como delimitador do campo de saída. Este comportamento pode ser modificado especificando opções. Veja o juntar página do manual para detalhes.