golympio
(usa CentOS)
Enviado em 25/03/2015 - 11:29h
Bom dia pessoal.
Estou precisando criar um script que identifique os valores iguais de uma coluna entre dois arquivos (lista_falha.txt e lista_ok.txt) e após encontrar criar outro arquivo com uma coluna adicional com informações capturadas do segundo arquivo (lista_ok.txt). Ou seja para os valores iguais da segunda coluna será acrescentado em um novo arquivo o valor da primeira coluna do arquivo (lista_ok.txt).
Abaixo um script que está funcionando, porem está demorando mais de 24h para terminar com dois arquivos de 3000 linhas cada. Existe alguma forma que eu possa melhorar a performance desta ação?
Obrigado!!!!
##############################################
#!/bin/bash
#set -x
clear
cont=1
contok=1
falha=`lista_falha.txt | wc -l`
ok=`lista_ok.txt | wc -l`
data=`date`
while [ $cont -le $falha ] ; do
listafalha=`cat lista_falha.txt | head -$cont | tail -1 | awk '{print $1 $2}'`
listafalhabina=`cat lista_falha.txt | head -$cont | tail -1 | awk -F"|" '{print $2}'`
while [ $contok -le $ok ] ; do
listaok=`cat lista_ok.txt | head -$contok | tail -1 | awk '{print $1}'`
listaok1=`cat lista_ok.txt | head -$contok | tail -1 | awk -F"|" '{print $2}'`
if [ $listafalhabina = $listaok1 ] ; then
echo "$listaok""|""$listafalha" >> /export/temp/output_$arq_name.log 2>&1
fi
contok=`expr $contok + 1`
done
if [ "$listafalhabina" != "$listaok1" ] ; then
listaok=0
echo "$listaok""|""$listafalha" >> /export/temp/output_$arq_name.log 2>&1
fi
cont=`expr $cont + 1`
contok=1
done
##################