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

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

Re: [shell-script] Direcionar somente a diferença entre dois arquivos.


From: Rodrigo Boechat
Subject: Re: [shell-script] Direcionar somente a diferença entre dois arquivos.
Date: Sat, 17 Dec 2011 16:07:11 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111108 Thunderbird/8.0

Bom.
Veja se o "diff" pode ser aplicado no seu caso.

Diff Man Page: http://unixhelp.ed.ac.uk/CGI/man-cgi?diff
Para compreender melhor o comando dá uma olhada.

Era isso que você procurava?

Espero ter ajudado.
Rodrigo Boechat

Em 16-12-2011 16:10, ogaihtnota10 escreveu:
>
> Boa tarde grupo,
>
> Fiz um script que manda as linhas diferentes entre dois arquivos para 
> o log1 e as linhas iguais para o log2. A saída está da forma que 
> quero, só que está demorando muito para processar.
>
> Tentei usar o comando comm -23 arq1 arq2 > log1 e comm -23 arq2 arq1 > 
> log2 e depois utilizar as saídas do comando comm, só que não 
> funcionou, pois o comando me retornou linhas iguais também.
>
> Alguém conhece algum comando ou alguma forma mais rápida de filtrar as 
> diferenças entre dois arquivos?
>
> Observação: Os arquivos tem em média 2000 linhas. Segue abaixo o 
> script que estou utilizando.
>
> #######################################################################
> #!/bin/bash
>
> set -x
>
> mkdir relat
> movto=20111205
>
> for sigla in `cat loja.dat`
> do
>
> mkdir ${sigla}_${movto}
>
> cat SafX993${movto}_${sigla}_Producao.txt |awk -F " " '{print 
> $4","$5","$8}' > ${sigla}_${movto}_CpfCnpj_Producao.txt
>
> cat SafX993${movto}_${sigla}_Release.txt |awk -F " " '{print 
> $4","$5","$8}' > ${sigla}_${movto}_CpfCnpj_Release.txt
>
> #comm -23 ${sigla}_${movto}_CpfCnpj_Producao.txt 
> ${sigla}_${movto}_CpfCnpj_Release.txt 
> >${sigla}_${movto}_difere_producao.txt
>
> #comm -23 ${sigla}_${movto}_CpfCnpj_Release.txt 
> ${sigla}_${movto}_CpfCnpj_Producao.txt 
> >${sigla}_${movto}_difere_release.txt
>
> count=1
> echo "Versao-----ECF-COO/TR--CPF/CNPJ----------" 
> >>Relatorio_${sigla}_${movto}_difere.log
> for producao in `cat ${sigla}_${movto}_CpfCnpj_Producao.txt`
> do
>
> # release=`cat ${sigla}_${movto}_CpfCnpj_Release.txt |head -1`
> release=`head -$count ${sigla}_${movto}_CpfCnpj_Release.txt |tail -1`
> # log8=`cat ${sigla}_${movto}_CpfCnpj_Release.txt |head -1 |awk -F, 
> '{print $2}'`
> log8=`echo $release |awk -F, '{print $2}'`
>
> pdv=`cat LOGV8_${movto}_${sigla} |awk -vLOG8="$log8" -F, '$5==10 && 
> $22==LOG8 {print $2}'`
> trn=`cat LOGV8_${movto}_${sigla} |awk -vLOG8="$log8" -F, '$5==10 && 
> $22==LOG8 {print $3}'`
>
> cpf=`cat LOGV8_${movto}_${sigla} |awk -vPDV="$pdv" -vTRN="$trn" -F, 
> '$2==PDV && $3==TRN && $5==98 && $10==8 {print 
> $2","$3","$14","$15}'|tr -d . |tr -d - |tr -d /`
>
> # grep -v $release ${sigla}_${movto}_CpfCnpj_Release.txt 
> >${sigla}_${movto}_difere.tmp
> # mv -f ${sigla}_${movto}_difere.tmp 
> ${sigla}_${movto}_CpfCnpj_Release.txt
>
> if [ ${producao} != ${release} ]
> then
>
> echo 
> "-----------------------------------------">>Relatorio_${sigla}_${movto}_difere.log
> echo "Producao => $producao" >>Relatorio_${sigla}_${movto}_difere.log
> echo "Release => $release" >>Relatorio_${sigla}_${movto}_difere.log
> echo "LOGV8 => $cpf" >>Relatorio_${sigla}_${movto}_difere.log
> echo 
> "-----------------------------------------">>Relatorio_${sigla}_${movto}_difere.log
>
> else
>
> echo "Registro producao => ${producao} igual ao registro da release => 
> ${release}!!!" >>${sigla}_${movto}_reg_igual.log
>
> fi
> count=`expr $count + 1`
> done
>
> # mv ${sigla}_${movto}_* ${sigla}_${movto}
> # mv Relatorio_${sigla}_${movto}_difere.log relat
>
> done
>
> ######################################################################
>
>
> 


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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