fbpx

Comandos Linux – Comando comm

Comando de comunicação do Linux

Atualizado: 05/04/2019 por Computer Hope

comando comm

Em sistemas operacionais do tipo Unix, o comando comm compara dois arquivos classificados linha por linha.

Este documento cobre a versão GNU / Linux do comm .

Descrição

Sem opções, comm produz saída de três colunas. A coluna um contém linhas exclusivas para FILE1 , a coluna dois contém linhas exclusivas para FILE2 e a coluna três contém linhas comuns aos dois arquivos. Cada uma dessas colunas pode ser suprimida individualmente com opções.

Sintaxe

  comm [ OPÇÃO ] ... ARQUIVO1 ARQUIVO2

Opções

-1suprimir coluna 1 (linhas exclusivas para FILE1 )
-2suprimir coluna 2 (linhas exclusivas para FILE2 )
-3suprimir coluna 3 (linhas que aparecem nos dois arquivos)
–check-orderverifique se a entrada está classificada corretamente, mesmo que todas as linhas de entrada sejam emparelhadas
–nocheck-ordernão verifique se a entrada está classificada corretamente
– delimitador de saída = STRseparar colunas com a string STR
–Socorroexibir uma mensagem de ajuda e sair.
–versãoinformações da versão de saída e saia.

Exemplos

Digamos que você tenha dois arquivos de texto, recipes.txt e shopping-list.txt .

receita.txt contém estas linhas:

  Farinha para todos os fins
 Bicarbonato de sódio
 Pão
 Açúcar mascavo
 Pedaços de chocolate
 Ovos
 Leite
 Sal
 Extrato de baunilha
 Açúcar branco

shopping-list.txt contém estas linhas:

  Farinha para todos os fins
 Pão
 Açúcar mascavo
 Salada de galinha
 Pedaços de chocolate
 Ovos
 Leite
 Cebolas
 Picles
 Batata frita
 Soda Pop
 Tomates
 Açúcar branco

Como você pode ver, os dois arquivos são diferentes, mas muitas das linhas são iguais. Nem todos os ingredientes da receita estão na lista de compras e nem tudo na lista faz parte da receita.

Se executarmos o comando comm nos dois arquivos, ele lerá os dois arquivos e fornecerá três colunas de saída:

  comm receita.txt lista de compras.txt
  Farinha para todos os fins
 Bicarbonato de sódio
         Pão
         Açúcar mascavo
     Salada de galinha
         Pedaços de chocolate
         Ovos
         Leite
     Cebolas
     Picles
     Batata frita
 Sal
     Soda Pop
     Tomates
 Extrato de baunilha
         Açúcar branco

Aqui, cada linha de saída possui zero, uma ou duas guias no início, separando a saída em três colunas:

  1. A primeira coluna (zero guias) é linhas que aparecem apenas no primeiro arquivo.
  2. A segunda coluna (uma guia) são linhas que aparecem apenas no segundo arquivo.
  3. A terceira coluna (duas guias) são linhas que aparecem nos dois arquivos.

(As colunas se sobrepõem visualmente porque, nesse caso, nosso terminal imprime uma guia com oito espaços. Pode parecer diferente na tela.)

A seguir, vamos ver como podemos trazer nossos dados separados para uma planilha .

Criando um arquivo CSV para planilhas

Uma maneira útil de usar comm é gerar um arquivo CSV , que pode ser lido por um programa de planilha . Os arquivos CSV são apenas arquivos de texto que usam um determinado caractere, geralmente vírgula, tabulação ou ponto e vírgula, para delimitar dados de uma maneira que possa ser lida como uma planilha. Por convenção, os nomes de arquivo CSV têm a extensão .csv .

Por exemplo, vamos executar o mesmo comando, mas desta vez vamos redirecionar a saída para um arquivo chamado output.csv usando o operador >

  comm recipes.txt lista de compras.txt> output.csv

Desta vez, não há saída na tela. Em vez disso, a saída é enviada para um arquivo chamado output.csv . Para verificar se funcionou corretamente, podemos obter o conteúdo de output.csv :

  cat output.csv
  Farinha para todos os fins
 Bicarbonato de sódio
                 Pão
                 Açúcar mascavo
         Salada de galinha
                 Pedaços de chocolate
                 Ovos
                 Leite
         Cebolas
         Picles
         Batata frita
 Sal
         Soda Pop
         Tomates
 Extrato de baunilha
                 Açúcar branco

Para trazer esses dados para uma planilha, podemos abri-los no LibreOffice Calc:

Abrindo um arquivo CSV no LibreOffice Calc

Antes de abrir o arquivo, o LibreOffice nos pergunta como interpretar os dados do arquivo.

Queremos que o delimitador de coluna seja um caractere de tabulação, que já está marcado por padrão. (Não há vírgulas ou ponto-e-vírgula em nossos dados, portanto, não precisamos nos preocupar com as outras caixas de seleção.) Também nos fornece uma visualização de como os dados serão exibidos, dadas as opções que selecionamos.

Opções de interpretação de CSV no LibreOffice Calc

Tudo parece bom, então podemos clicar em OK, e o LibreOffice importará nossos dados para uma planilha.

saída de comunicação importada para uma planilha

Agora, se quiséssemos, poderíamos salvar a planilha em outro formato, como um arquivo do Microsoft Excel , um arquivo XML ou mesmo HTML .

Suprimindo colunas

Se você deseja gerar apenas colunas específicas, poderá especificar os números das colunas a serem suprimidas no comando, precedido por um traço. Por exemplo, este comando suprimirá as colunas 1 e 2, exibindo apenas as colunas 3 – linhas compartilhadas pelos dois arquivos. Isso isola os itens da lista de compras que também fazem parte da receita:

  comm -12 receita.txt lista de compras.txt
  Farinha para todos os fins
 Pão
 Açúcar mascavo
 Pedaços de chocolate
 Ovos
 Leite
 Açúcar branco

O próximo comando suprimirá as colunas 2 e 3, exibindo apenas as colunas 1 – linhas da receita que não estão na lista de compras. Isso nos mostra quais ingredientes já temos em nosso armário:

  comm -23 receita.txt lista de compras.txt
  Bicarbonato de sódio
 Sal
 Extrato de baunilha

E o próximo comando suprimirá a coluna 3, exibindo apenas as colunas 1 e 2 – os itens da receita que não estão na lista de compras e os itens da lista de compras que não estão na receita, cada um em sua própria coluna.

  comm -3 receita.txt lista de compras.txt
  Bicarbonato de sódio
         Salada de galinha
         Cebolas
         Picles
         Batata frita
 Sal
         Soda Pop
         Tomates
 Extrato de baunilha

cmp – Compare dois arquivos byte por byte.
diff – Identifique as diferenças entre dois arquivos.
join – Une as linhas de dois arquivos que compartilham um campo de dados comum.
sort – Ordena as linhas em um arquivo de texto.
uniq – identifique e opcionalmente filtre linhas repetidas em um arquivo.

14 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.