Como deletar palavras de uma lista de acordo com outra lista?

1. Como deletar palavras de uma lista de acordo com outra lista?

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 28/08/2016 - 00:34h

Galera, estou tendo dificuldade em em fazer um script.
Seguinte, eu tenho duas listas de palavras, exemplo:

Lista 1:

gato
cachorro
pato
macaco
coelho

Lista 2:

pato
macaco
coelho


O que eu quero fazer é remover da Lista 1 o que tiver na lista 2. Nesse caso deveria excluir as linhas iguais né?!

Tô tentando fazer esse laço, mas percebi que ele não lista em coluna pra comparar as palavras, coloca tudo em uma linha só :/.

for i in `cat lista2.txt`; do
sed -i '/${i}/d' > lista1.txt
done


Podem me ajudar?


  


2. Re: Como deletar palavras de uma lista de acordo com outra lista?

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 28/08/2016 - 00:59h

Olá,
cara vai dormir.hahahahah
kkkkkkk

faltou você mudar as aspas ' para dupla "

sed -i "/${i}/d"


porem há um problema ele vai deletar tudo
por exemplo se existir a palavra teste nos 2 arquivos ele vai deletar tudo de uma lista

me diz uma coisa na lista 2 as palavras estão uma do lado da outra
tipo assim
teste
teste1

ou está assim
teste dsidijsdijsidisdisjd
teste1 idjisjdisjdisjd

se for assim
teste
teste1

eu sei como fazer de outro modo



---> Márcio M M <---


3. Re: Como deletar palavras de uma lista de acordo com outra lista?

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 28/08/2016 - 01:18h

conectadohost escreveu:

Olá,
cara vai dormir.hahahahah
kkkkkkk

faltou você mudar as aspas ' para dupla "

sed -i "/${i}/d"


porem há um problema ele vai deletar tudo
por exemplo se existir a palavra teste nos 2 arquivos ele vai deletar tudo de uma lista

me diz uma coisa na lista 2 as palavras estão uma do lado da outra
tipo assim
teste
teste1

ou está assim
teste dsidijsdijsidisdisjd
teste1 idjisjdisjdisjd

se for assim
teste
teste1

eu sei como fazer de outro modo



---> Márcio M M <---


Hehehehe fim de semana da pra aproveita um pouquinho mais a noite hehe. Mas já to indo dormir.
Esta em lista, uma palavra em baixo da outra. Assim:
linha1
linha2
linha3

Nossa eu fiz com aspinha dupla, deu certo. Que coisa não.
Como é o outro jeito?

brigado


4. Re: Como deletar palavras de uma lista de acordo com outra lista?

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 28/08/2016 - 01:28h

Olá,
acho que o sono não me deixou ver uma coisa.kkkk
seu script funciona só faltou ajustar umas coisas.

agora ta funcionando

#!/bin/bash
SHELL=/bin/sh
PATH=/sbin:/usr/sbin:/usr/bin:/bin

for i in `cat /home/marciommm/lista2.txt`; do
sed -i "/${i}/d" /home/marciommm/lista1.txt
done


só mudei a aspa simples para dupla " e removi o sinal >
sed -i '/${i}/d' > lista1.txt

ele vai ler as palavras que estão na lista 2 e remover as palavras na lista 1
só que ele vai deletar a linha toda que tiver as palavras acho que era assim que você queria.


---> Márcio M M <---





5. Re: Como deletar palavras de uma lista de acordo com outra lista?

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 28/08/2016 - 01:48h

Olá,
o outro que lhe falei seria assim


#!/bin/bash
SHELL=/bin/sh
PATH=/sbin:/usr/sbin:/usr/bin:/bin

cat /home/marciommm/lista2.txt | awk -F " " '{print "BB " $1 }' | sort | uniq | sed -r 's/(BB)//g'|
while read BB
do

VERIFICA=`cat /home/marciommm/lista1.txt | awk -F " " '{print "BB " $1 }' | sort | uniq | grep "\b$BB\b" | wc -l `


if [ "$VERIFICA" -gt "0" ];
then
echo -e "\033[01;32m encontramos a palavra $BB\n \033[01;37m Estamos deletando a palavra $BB "
sed -i "/$BB/d" /home/marciommm/lista1.txt
else
echo -e " "
fi
done


A cor vai de brinde eu agora to metido fazendo script colorido kkkkkkkk

---> Márcio M M <---


6. Re: Como deletar palavras de uma lista de acordo com outra lista?

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/08/2016 - 01:57h

Se me permitem, ainda há como tirar o comando cat, colocando o nome do arquivo ao final do comando AWK.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



7. Re: Como deletar palavras de uma lista de acordo com outra lista?

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 28/08/2016 - 02:04h

listeiro_037 escreveu:

Se me permitem, ainda há como tirar o comando cat, colocando o nome do arquivo ao final do comando AWK.

Olá,
Opa quanto mais meios de se fazer um script melhor
é verdade o awk é um editor
assim já seria o suficiente


awk -F " " '{print "BB " $1 }' /home/marciommm/lista2.txt | sort | uniq


foi costume meu sempre fazendo scripts iniciando com cat e nunca reparei nisso.

só por curiosidade há algum problema em usar o cat em scripts?
por que esses dias ajudei um outro rapaz e me falaram pra evitar usar o cat em scripts
mas não me explicaram por que devo evitar ele.


---> Márcio M M <---


8. Re: Como deletar palavras de uma lista de acordo com outra lista?

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/08/2016 - 02:07h

Não que eu saiba.

Eu costumo usar certas vezes como em

cat ... | while read i; 
do
...
done


quando poderia ser feito

while read i; 
do
...
done < ...


O arquivo do cat no segundo exemplo vai logo após o < que está ao lado de done.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



9. Re: Como deletar palavras de uma lista de acordo com outra lista?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/08/2016 - 14:27h

gabrielscorpion escreveu:

Galera, estou tendo dificuldade em em fazer um script.
Seguinte, eu tenho duas listas de palavras, exemplo:

Lista 1:

gato
cachorro
pato
macaco
coelho

Lista 2:

pato
macaco
coelho


O que eu quero fazer é remover da Lista 1 o que tiver na lista 2. Nesse caso deveria excluir as linhas iguais né?!

Tô tentando fazer esse laço, mas percebi que ele não lista em coluna pra comparar as palavras, coloca tudo em uma linha só :/.

for i in `cat lista2.txt`; do
sed -i '/${i}/d' > lista1.txt
done


Podem me ajudar?


Boa tarde . . .
Sugestões:
01
while IFS=$'\n' read -r PALAVRA;do
sed -i "/$PALAVRA/d" LISTA_01.txt
done<LISTA_02.txt

02
NR=$(awk 'END {print NR}' LISTA_02.txt)
for ((X=1;X<=$NR;X++));do
PALAVRA=$(sed -n "${X}p" LISTA_02.txt)
sed -i "/$PALAVRA/d" LISTA_01.txt
done

03
diff LISTA_01.txt LISTA_02.txt |sed -n '/^</p'|sed 's/< //' > LISTA_01.temp;cat LISTA_01.temp > LISTA_01.txt 


É isso . . .
Att.:
Marcelo Oliver


10. Re: Como deletar palavras de uma lista de acordo com outra lista?

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 28/08/2016 - 14:49h

Olá,
@msoliver ai não tem graça eu faço script de trocentas linhas e você com uma linha já resolve.kkkkkkk
bom que sempre tem outros meios de fazer um script, salvei seu exemplo com diff vai me ajudar em outro projeto.

---> Márcio M M <---


11. Re: Como deletar palavras de uma lista de acordo com outra lista?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/08/2016 - 20:30h

conectadohost escreveu:

Olá,
@msoliver ai não tem graça eu faço script de trocentas linhas e você com uma linha já resolve.kkkkkkk
bom que sempre tem outros meios de fazer um script, salvei seu exemplo com diff vai me ajudar em outro projeto.
-----------------------------------------------------------------------------------------------
---> Márcio M M <---

Boa noite Márcio.
Dei uma simplificada, substitui os "dois seds" por "um awk" . . . Rsrsrsrsr
diff LISTA_01.txt LISTA_02.txt|awk '/^</{print $2}' > lista.temp ; cat lista.temp > LISTA_01.txt 


Abç.:
Marcelo Oliver



12. Re: Como deletar palavras de uma lista de acordo com outra lista?

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 29/08/2016 - 08:57h

Nossa, quanta sabedoria de vocês. Todos funcionam com que eu queria, era isso mesmo.

Um dia chego nesse nível.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts