Sed com 2 Arquivos (Dúvida Avançada, Acredito) [RESOLVIDO]

1. Sed com 2 Arquivos (Dúvida Avançada, Acredito) [RESOLVIDO]

Steve
Steve

(usa Slackware)

Enviado em 12/02/2019 - 17:25h

Sei que o SED faz maravilhas na hora de remover um texto de um arquivo, ou alterar textos, apagar linhas em branco e etc...
Preciso muito de ajuda com o seguinte exemplo:
Possuo 2 arquivos de texto comum.
Preciso REMOVER do Arquivo2.txt as linhas que já existem no Arquivo1.txt
PROBLEMA, Não sei como fazer o SED ler cada linha do Arquivo1.txt para apagar do Arquivo2.txt e continuar isso até terminar!
Alguém pode ajudar?

Arquivo1.txt:
1
3
5
6

Arquivo2.txt:
1
2
3
4
5
6

Preciso que o resultado seja assim:
2
4

OBS IMPORTANTE. Os Arquivos acima são apenas exemplos OK? O Arquivo que usarei possue 130 mil linhas com textos bem grandes em cada linha! Motivo pelo qual, preciso que seja lida linha a linha...

Uma coisa que pensei se alguém tiver alguma idéia:
Deve existir no Linux, algum programa que leia um arquivo Linha a Linha. E consiga jogar isso como uma variável para o comando SED, que lerá o 2º Arquivo e excluirá a linha... O Problema é que não sei quem pode ler linha a linha, e nem como passar essa variável ao mesmo tempo...



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/02/2019 - 18:44h


Steve escreveu:

Sei que o SED faz maravilhas na hora de remover um texto de um arquivo, ou alterar textos, apagar linhas em branco e etc...
Preciso muito de ajuda com o seguinte exemplo:
Possuo 2 arquivos de texto comum.
Preciso REMOVER do Arquivo2.txt as linhas que já existem no Arquivo1.txt
PROBLEMA, Não sei como fazer o SED ler cada linha do Arquivo1.txt para apagar do Arquivo2.txt e continuar isso até terminar!
Alguém pode ajudar?

Arquivo1.txt:
1
3
5
6

Arquivo2.txt:
1
2
3
4
5
6

Preciso que o resultado seja assim:
2
4

OBS IMPORTANTE. Os Arquivos acima são apenas exemplos OK? O Arquivo que usarei possue 130 mil linhas com textos bem grandes em cada linha! Motivo pelo qual, preciso que seja lida linha a linha...

Uma coisa que pensei se alguém tiver alguma idéia:
Deve existir no Linux, algum programa que leia um arquivo Linha a Linha. E consiga jogar isso como uma variável para o comando SED, que lerá o 2º Arquivo e excluirá a linha... O Problema é que não sei quem pode ler linha a linha, e nem como passar essa variável ao mesmo tempo...

Boa noite, segue:
while read linha;do
sed -i "/^${linha}$/d" arq02.txt ;
done<arq01.txt

Att.:
Marcelo Oliver

3. Re: Sed com 2 Arquivos (Dúvida Avançada, Acredito) [RESOLVIDO]

Matheus
pylm

(usa Gentoo)

Enviado em 12/02/2019 - 17:41h


Pra ler linha a linha


while read linhas; do echo "$linhas"; done <arquivo



4. Re: Sed com 2 Arquivos (Dúvida Avançada, Acredito) [RESOLVIDO]

Steve
Steve

(usa Slackware)

Enviado em 12/02/2019 - 19:42h

msoliver escreveu:
while read linha;do
sed -i "/^${linha}$/d" arq02.txt ;
done<arq01.txt

Att.:Marcelo Oliver


UAU, só tem FODÕES por aqui! Muitíssimo Obrigado!


5. Re: Sed com 2 Arquivos (Dúvida Avançada, Acredito) [RESOLVIDO]

Steve
Steve

(usa Slackware)

Enviado em 12/02/2019 - 19:53h

pylm escreveu: Pra ler linha a linha

while read linhas; do echo "$linhas"; done <arquivo

Sua Resposta também é MUITO ÚTIL, pois gostei de aprender esse comando, como funciona e entendê-lo! Obrigado!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts