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

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

Direcionar somente a diferença entre dois arquivos.


From: ogaihtnota10
Subject: Direcionar somente a diferença entre dois arquivos.
Date: Fri, 16 Dec 2011 18:10:23 -0000
User-agent: eGroups-EW/0.82

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

######################################################################
 



reply via email to

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