Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

1. Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

Rodrigo Dexheimer
kilrathi

(usa Red Hat)

Enviado em 22/08/2024 - 08:45h

Prezados, bom dia.

Estou aqui quebrando a cabeça para buscar uma forma de comparar duas listas de nomes e ver qual o nome que está faltando em uma das listas.

Exemplo:
LISTA A
LISTA B

A Lista A é a completa e a lista B é a possível que falte.

Fiz um FOR, que trás as existentes, Tipo

LISTA A:

carro
barco
nave
submarino


LISTA B:

carro
barco


Comando:
for i in $(cat listaA.txt);do cat listaB.txt|grep $i;done

carro
barco





Quero que mostre tambem os que nao existem. Pensei em fazer um loop com IF para analisar cada ação.


Agradeço desde já.


















  


2. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 22/08/2024 - 08:45h

Bom dia!

Você pode fazer essa comparação de listas utilizando o comando `comm`, que é bastante eficaz para esse tipo de tarefa. Para usar o `comm`, as listas precisam ser organizadas em arquivos, ordenadas e cada uma em uma linha separada. Abaixo, vou mostrar como fazer isso.

Primeiro, certifique-se de que suas listas estão ordenadas e separadas em arquivos:

1. Crie os arquivos `listaA.txt` e `listaB.txt` com os seguintes conteúdos:

**listaA.txt:**
```
carro
barco
nave
submarino
```

**listaB.txt:**
```
carro
barco
```

2. Agora, você pode executar o seguinte comando para ver quais nomes da Lista A não estão na Lista B:

**Comando:**
```bash
sort listaA.txt > listaA_sorted.txt

sort listaB.txt > listaB_sorted.txt

comm -13 listaA_sorted.txt listaB_sorted.txt
```

Aqui está o que cada parte do comando faz:

- **sort listaA.txt > listaA_sorted.txt**: Ordena a Lista A e a salva em um novo arquivo.

- **sort listaB.txt > listaB_sorted.txt**: Ordena a Lista B e a salva em um novo arquivo.

- **[b]comm -13 listaA_sorted.txt listaB_sorted.txt[/b


3. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 22/08/2024 - 11:00h

se o loop não for obrigatório vc pode fazer

cat listaA.txt listaB.txt | sort | uniq -u



4. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/08/2024 - 11:51h


kilrathi escreveu:

Prezados, bom dia.

Estou aqui quebrando a cabeça para buscar uma forma de comparar duas listas de nomes e ver qual o nome que está faltando em uma das listas.

Exemplo:
LISTA A
LISTA B

A Lista A é a completa e a lista B é a possível que falte.

Fiz um FOR, que trás as existentes, Tipo

LISTA A:

carro
barco
nave
submarino


LISTA B:

carro
barco


Comando:
for i in $(cat listaA.txt);do cat listaB.txt|grep $i;done

carro
barco





Quero que mostre tambem os que nao existem. Pensei em fazer um loop com IF para analisar cada ação.
Agradeço desde já.


Segue sugestão:

while IFS="\n" read x;do
grep -q "$x" lstb && echo "$x:Existe" || echo "$x: Não existe";
done<lsta

É isso!
______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/udou.$/s/^[ ]+//p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



5. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

Rodrigo Dexheimer
kilrathi

(usa Red Hat)

Enviado em 22/08/2024 - 15:41h

leandropscardua escreveu:

se o loop não for obrigatório vc pode fazer

cat listaA.txt listaB.txt | sort | uniq -u



Neste caso, ele funcionaria, porem, se tiver difetente, uma, ele vai incluir. Só uma lista é verdadeira e nao pode dizer q nao existe na outra. ou seja.

A= 1, 2, 3, 5.
B= 1, 2, 6

Só pode apontar que a lista B falta o numero 3 e o 5. Nao pode falar que a lista A falta o numero 6.


6. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

Rodrigo Dexheimer
kilrathi

(usa Red Hat)

Enviado em 22/08/2024 - 15:44h


msoliver escreveu:


kilrathi escreveu:

Prezados, bom dia.

Estou aqui quebrando a cabeça para buscar uma forma de comparar duas listas de nomes e ver qual o nome que está faltando em uma das listas.

Exemplo:
LISTA A
LISTA B

A Lista A é a completa e a lista B é a possível que falte.

Fiz um FOR, que trás as existentes, Tipo

LISTA A:

carro
barco
nave
submarino


LISTA B:

carro
barco


Comando:
for i in $(cat listaA.txt);do cat listaB.txt|grep $i;done

carro
barco





Quero que mostre tambem os que nao existem. Pensei em fazer um loop com IF para analisar cada ação.
Agradeço desde já.


Segue sugestão:

while IFS="\n" read x;do
grep -q "$x" lstb && echo "$x:Existe" || echo "$x: Não existe";
done<lsta

É isso!
______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/udou.$/s/^[ ]+//p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



ESSE funcionou - TOPIZEIRA!!!!!


7. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/08/2024 - 00:53h

$ cat <<EOF >/tmp/lista_A.txt
> bala
> bela
> bila
> bola
> bula
> EOF

$ cat <<EOF >/tmp/lista_B.txt
> bala
> bela
> bola
> EOF

$ grep -v -f /tmp/lista_B.txt /tmp/lista_A.txt
bila
bula

$ grep -f /tmp/lista_B.txt /tmp/lista_A.txt
bala
bela
bola



... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


8. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 23/08/2024 - 07:29h


talvez ajude



#!/bin/bash

for item in $(cat listaA.txt); do
if ! grep -q "^$item$" listaB.txt; then
echo "$item está faltando na Lista B"
fi
done




9. Re: Comparar uma lista de nomes com outra e mostrar os nomes que nao existem.

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 23/08/2024 - 09:38h


kilrathi escreveu:

leandropscardua escreveu:

se o loop não for obrigatório vc pode fazer

cat listaA.txt listaB.txt | sort | uniq -u



Neste caso, ele funcionaria, porem, se tiver difetente, uma, ele vai incluir. Só uma lista é verdadeira e nao pode dizer q nao existe na outra. ou seja.

A= 1, 2, 3, 5.
B= 1, 2, 6

Só pode apontar que a lista B falta o numero 3 e o 5. Nao pode falar que a lista A falta o numero 6.


Eu tinha entendido que você queria os itens únicos das duas listas. Mas se vc quer só os da lista A, vc pode fazer um truque duplicando os itens da lista B, assim:

cat listaA.txt listaB.txt listaB.txt | sort | uniq -u







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts