De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 21 de abril de 2025
O comando comm
é uma ferramenta poderosa e pouco conhecida do Linux, usada para comparar dois arquivos linha a linha e mostrar suas similaridades e diferenças de forma simples. Ele é útil, por exemplo, para analisar listas, resultados de scripts ou controlar alterações em arquivos de texto.
O comm
lê dois arquivos ordenados (por padrão, em ordem alfabética), e produz uma saída dividida em três colunas:
comm [opções] arquivo1 arquivo2
Importante: Os arquivos de entrada devem estar ordenados. Se não tiver
certeza, utilize o comando sort
primeiro.
$ sort arquivoA.txt -o arquivoA.txt $ sort arquivoB.txt -o arquivoB.txt
Considere dois arquivos:
arquivoA.txt
ana bruno carlos giovana
arquivoB.txt
ana carlos daniel eduarda
Executando o comm
$ comm arquivoA.txt arquivoB.txt
ana
bruno
carlos
daniel
eduarda
giovana
arquivoA
(coluna 1): bruno e giovana
arquivoB
(coluna 2): daniel e eduarda
Você pode suprimir colunas da saída usando as opções:
-1 |
Oculta a primeira coluna (mostra apenas as linhas do arquivoB e as comuns) |
-2 |
Oculta a segunda coluna |
-3 |
Oculta a terceira coluna |
Listar apenas as linhas comuns aos dois arquivos
$ comm -12 arquivoA.txt arquivoB.txt
ana
carlos
Listar apenas linhas exclusivas de arquivoA
$ comm -23 arquivoA.txt arquivoB.txt
bruno
giovana
Listar linhas exclusivas de qualquer um dos arquivos
$ comm -3 arquivoA.txt arquivoB.txt
bruno
daniel
eduarda
giovana
Para comparar arquivos que não foram ordenados, use um pipe com sort:
$ comm <(sort arquivoA.txt) <(sort arquivoB.txt)
Útil em scripts para validar resultados de listas, logs ou inventários.
Exemplo | Descrição |
---|---|
comm arquivo1 arquivo2 |
Compara ambos (os dois ordenados) |
comm -12 arquivo1 arquivo2 |
Somente linhas comuns |
comm -23 arquivo1 arquivo2 |
Só linhas exclusivas de arquivo1 |
comm -13 arquivo1 arquivo2 |
Só linhas exclusivas de arquivo2 |
comm -3 arquivo1 arquivo2 |
Diferentes (sem comuns) |
O comm
é excelente para manipular listas e comparar arquivos rapidamente,
de maneira eficiente e sem precisar recorrer a scripts avançados.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários