Introdução
- 3639
- 729
- Enrique Crist
O comando de junção é mais um exemplo de utilitário de processamento de texto em GNU/Linux. O comando de junção combina dois arquivos com base nas linhas de conteúdo correspondentes encontradas em cada arquivo. O uso do comando de junção é bastante direto e, se usado atualmente e na situação certa, pode economizar muito tempo e esforço. Este artigo requer experiência de linha de comando muito básica.
Opções usadas com frequência
- -1 campo
Junte -se no campo especificado encontrado no arquivo 1 - -2 campo
Junte -se no campo especificado encontrado no arquivo 2 - -t char
Use char como um separador de entrada e saída
Fundamentos
O uso básico do comando de junção é o uso sem opções. Tudo o que é necessário é especificar 2 arquivos como argumentos. Digamos que temos dois arquivos a.txt e b.txt com um conteúdo seguinte:
$ cat a.TXT 1 A 2 B 3 C $ cat b.TXT 1 John 2 Linda 3 raros
Aqui podemos ver que o primeiro campo é um candidato perfeito para realizar uma operação de junção após. Por padrão, o comando de junção executará a operação de junção em um primeiro campo onde o separador de campo é um caractere ou guia de espaço único. Portanto, executando um comando linux a seguir, nossos dois arquivos são unidos com base no campo 1:
$ ingressar a.txt b.TXT 1 A John 2 B Linda 3 C rares
Escolha do campo
Em nosso exemplo anterior, você pode ver uma função padrão de um comando de junção. Nesta seção, veremos como podemos especificar um campo diferente no qual o comando de junção deve executar uma operação de junção. Vamos considerar um seguinte um.txt e b.arquivos txt:
$ cat a.TXT John A 1 Linda B 2 raros C 3 $ cat b.TXT 1 A 2 B 3 C
Como podemos ver, neste caso, o primeiro campo de junção padrão não é mais correspondente. Portanto, a execução de um comando de junção nesses dois arquivos não produzirá nenhuma saída. No entanto, também podemos ver que o segundo campo no primeiro arquivo está correspondendo ao segundo campo no segundo arquivo. Como resultado, podemos modificar o comportamento padrão do comando de junção e ingressar nos dois arquivos com base no segundo campo em cada arquivo:
$ junção -1 2 -2 2 a.txt b.TXT A John 1 1 B Linda 2 2 C rares 3 3
onde -1 é um primeiro arquivo e 2 é um segundo campo e -2 é um segundo arquivo e 2 é uma segunda coluna. Nesse caso, apenas porque os dois campos correspondentes são o segundo, podemos usar -j como um atalho.
$ junção -j 2 a.txt b.TXT A John 1 1 B Linda 2 2 C rares 3 3
Como você já notou um terceiro campo e o primeiro campo em ambos os arquivos também pode ser usado para uma operação de junção.
$ junção -1 2 -2 2 a.txt b.TXT A John 1 1 B Linda 2 2 C rares 3 3 $ junção -1 3 -2 1 a.txt b.TXT 1 John A A 2 Linda B B 3 raros C C
É importante observar dos últimos exemplos que o comando de junção sempre imprimirá o campo de correspondência como primeiro.
Escolhendo delimitador de campo
Bem, nem todos os arquivos são bem formatados para uma operação de comando de junção. Como mencionado anteriormente, o delimitador de campo padrão é o espaço. Mas e se tivermos “” (vírgula) ou até uma guia como um delimitador? Vamos considerar os arquivos seguintes:
$ cat a.TXT John, a, 1 Linda, b, 2 raros, c, 3 $ cat b.TXT 1, A 2, B 3, C
Nesse caso, a única diferença dos exemplos anteriores é que o separador de campo é ",". Para dizer ao comando ingressar qual separador de campo para usar, podemos aproveitar -se a opção -t Othewise, a sintaxe é a mesma:
$ junção -t, -1 3 -2 1 a.txt b.TXT 1, John, A, A 2, Linda, B, B 3, rares, C, C
Vários espaços
Se seus arquivos tiverem vários espaços como delimitador de campo, a opção mais segura é convertê -los em um único delimitador de espaço. Por exemplo, ingressar nesses arquivos pode ser bastante difícil:
$ cat a.TXT John A 1 Linda B 2 raros C 3 $ cat b.TXT 1 A 2 B 3 C
Portanto, se a situação permitir, você poderá convertê -lo em um único arquivo delimitado por espaço usando o comando sed:
$ sed -i 's/\ s \+//g' a.TXT $ sed -i 's/\ s \+//g' b.TXT $ cat a.txt b.TXT John A 1 Linda B 2 raros C 3 1 A 2 B 3 C
Guia Um delimitador de campo
O Delimitador de Tab também é aceito pelo comando de junção como padrão. Portanto, o exemplo a seguir executará a operação de junção válida:
$ cat a.txt b.TXT John A 1 Linda B 2 raros C 3 1 A 2 B 3 C $ junção -1 3 -2 1 a.txt b.TXT 1 John A A 2 Linda B B 3 raros C C
Ignorando o caso
Se o seu campo correspondente estiver em ordem perfeita, mas os campos de ambos os arquivos têm diferenças superior e inferior, a junção não executará uma operação de junção válida e ignorará linhas incomparáveis, a menos que -i (Ignore Case) seja usado. Observe o seguinte caso BASTIVE B No exemplo a seguir:
$ cat a.txt b.TXT John A 1 Linda B 2 raros C 3 1 A 2 B 3 C $ junção -1 2 -2 2 a.txt b.TXT A John 1 1 C rares 3 3 $ junção -i -1 2 -2 2 a.txt b.TXT A John 1 1 B Linda 2 2 C rares 3 3
Substituindo formato de junção padrão
No exemplo seguinte, veremos como podemos substituir um comportamento padrão do formato de comando de junção com -o. Considere uma saída de junção de arquivos a.txt e b.TXT:
$ cat a.txt b.TXT John A 1 Linda B 2 raros C 3 1 A 2 B 3 C $ junção -1 2 -2 2 a.txt b.TXT A John 1 1 B Linda 2 2 C rares 3 3
O campo de ingresso é impresso como primeiro. E se não quisermos imprimir o campo de união de juntas ou se quisermos imprimir o campo unido em ordem diferente. Nesse caso, a opção -o formato se torna muito útil. Neste exemplo, imprimiremos apenas campos correspondentes:
- Primeiro campo no primeiro arquivo: 1.1
- Primeiro campo no segundo arquivo: 2.1
$ junção -o 1.1 2.1 -1 2 -2 2 A.txt b.TXT John 1 Linda 2 raros 3
Linhas não paráveis
Por padrão, apenas linhas emparíveis são impressas pelo comando de junção. -Uma opção instrui o comando de junção para incluir linhas incomparáveis. No próximo exemplo, imprimiremos todas as linhas incomparáveis no arquivo 1.
$ cat a.txt b.TXT John A 1 Linda B 2 raros C 3 Lubos D 4 1 A 2 B 3 C 5 E $ junção -a 1 -o 1.1 2.1 -1 2 -2 2 A.txt b.TXT John 1 Linda 2 raros 3 lubos
Ou o gato imprimimos todas as linhas não emparelhadas de ambos os arquivos por:
$ junção -a 1 -a 2 -o 1.1 2.1 -1 2 -2 2 A.txt b.TXT John 1 Linda 2 raros 3 Lubos 5
Tutoriais do Linux relacionados:
- Coisas para instalar no Ubuntu 20.04
- Uma introdução à automação, ferramentas e técnicas do Linux
- Mastering Bash Script Loops
- Loops aninhados em scripts de basquete
- Manipulando a entrada do usuário em scripts bash
- Comandos básicos do Linux
- Comandos Linux: os 20 comandos mais importantes que você precisa para…
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Arquivos de configuração do Linux: os 30 primeiros mais importantes
- Como montar a imagem ISO no Linux