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.


O comando comm

Colaboração: Julio Cezar Neves

Data de Publicação: 17 de agosto de 2023

O comando comm compara dois arquivos classificados linha por linha

Sem opções, produz uma saída de três colunas. A coluna um contém linhas exclusivas para o primeiro arquivo, a coluna dois contém linhas exclusivas para o segundo arquivo e a coluna três contém linhas comuns a ambos os arquivos.

Para entendermos melhor, veja estas duas listas: a de compras e a do que já foi comprado:

$ paste <(seq 6) acomprar comprados # O separador do paste é <TAB>
1	Arroz	Cachaça
2	Cachaça	Cerveja
3	Cerveja	Limão
4	Feijão	Maracujá
5	Limão	TiraGosto
6	TiraGosto

Então vejamos o comm funcionando com esses arquivos:

$ comm acomprar comprados 
Arroz
			Cachaça
			Cerveja
Feijão
			Limão
	Maracujá
			TiraGosto

Ou seja, a primeira coluna é só o que está somente no arquivo acomprar, a segunda é dos registros exclusivos de comprados e a terceira contém o que é comum a ambos.

Agora veja como podemos apimentar os nossos scripts com as principais opções do comando comm:

-1 suprime a coluna 1 (linhas exclusivas para primeiro arquivo)
-2 suprime a coluna 2 (linhas exclusivas para segundo arquivo)
-3 suprime a coluna 3 (linhas que aparecem em ambos os arquivos)
$ comm -1 acomprar comprados 
	Cachaça
	Cerveja
	Limão
Maracujá
	TiraGosto

$ comm -2 acomprar comprados 
Arroz
	Cachaça
	Cerveja
Feijão
	Limão
	TiraGosto

$ comm -3 acomprar comprados 
Arroz
Feijão
	Maracujá

Mas também podemos combinar as opções e estas combinações é que são mais úteis em programação, veja:

$ comm -12 acomprar comprados # Registros comuns aos dois arquivos
Cachaça
Cerveja
Limão
TiraGosto

$ comm -13 acomprar comprados # Gegistro único em comprados
Maracujá

$ comm -23 acomprar comprados # Registros únicos em a comprar
Arroz
Feijão

Fico na torcida para que esta série de artigos sobre comparações de arquivos venha a lhe ser útil na elaboração de scripts… Mas, se você quiser aprender Shell, desde os seus fundamentos até aprender a criar paralelismo de processos em Shell, venha fazer o meu curso. Você gostará!

Veja também os outros artigos da série sobre comparação de arquivos:

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Julio Cezar Neves