[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
######################################################################
- Direcionar somente a diferença entre dois arquivos.,
ogaihtnota10 <=