shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Re: retirar conteudo de arq1 em arq2


From: MrBiTs
Subject: RE: [shell-script] Re: retirar conteudo de arq1 em arq2
Date: Thu, 25 Nov 2004 12:04:56 -0200

<QUOTE>
Caro pinguin metido a engraçado,
   nao nao eh um exercior de faculdade, mas a solucao para 10linhas de
codigo, sobre a solucao nao entedi nada, mas vou me empenhar em aprender.
   sobre a piada, procure ser mais cordial, nao eh assim que irás crescer.
</QUOTE>

HEHEHEHEHEHEHEHEHEHEHEHEHEHEHHEHEHEHEEHHEHE

Vamos la... 

while read LINHA ; do  
Nessa linha estou falando para ele : enquanto ler uma variavel chamada
LINHA, faça. Um laço while simples de programacao, ok ?

    grep -v $LINHA nome2.txt > /tmp/__nome_temp.txt
O comando grep, a grosso modo, faz uma procura por uma string ou expressao
regular dentro de um determinado texto ( no caso nosso nome2.txt. A opcao -v
devolve tudo o que NAO CASA, NAO COMBINA, com o parametro passado. Entao,
fazendo teste de mesa, imagine que a variavel LINHA contenha
PINGUIMMETIDOAENGRACADO. O comando grep vira "grep -v
PINGUIMMETIDOAENGRACADO nome2.txt", o que vai retornar todas as linhas do
arquivo nome2.txt MENOS a(s) linha(s) que contenham PINGUIMMETIDOAENGRACADO.
O > /tmp/__nome_temp.txt vai direcionar a saida do comando grep para um
arquivo temporario qualquer. Isso chama-se Redirecionamento de Saida Padrao
( STDOUT, que tipicamente é o terminal ou console onde vc esta trabalhando
). 

    mv /tmp/__nome_temp.txt nome2.txt 
Simplesmente move o arquivo temporario para o arquivo de origem nome2.txt,
ou seja, agora nome2.txt nao tem mais PINGUIMMETIDOAENGRACADO e voce fica
tranquilo.

done < nome1.txt
Aqui é somente o Fim-Enquanto do nosso algoritmo e eu Redireciono a Entrada
Padrao ( STDIN, que tipicamente é o nosso teclado ) fazendo-a ser o arquivo
nome1.txt, que contem os nomes que eu quero excluir do nome2.txt, inclusive
o PINGUIMMETIDOAENGRACADO.

Agora, por que fazer grep -v PINGUIMMETIDOAENGRACADO nome2.txt >
arquivotemporario e nao fazer direto grep -v PINGUIMMETIDOAENGRACADO
nome2.txt > nome2.txt ?

Simples: o sistema operacional vai criar o arquivo de saida ANTES de
processar o arquivo de entrada, entao voce nao terá nada para comparar e
terá perdido seus dados.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]