Problemas de busqueda UNIX... (29/12/05)
> auuanita wrote:
>
> Hola, aquí viene la pregunta:
>
> Tengo un fichero muy grande el cual me recorro línea a línea y me
> quedo con el segundo campo (que es un numero de teléfono) y luego
> busco ese numero de teléfono en otro fichero muy grande con un grep
> y si esta lo meto en un fichero y sino en otro, espero haberme explicado,
> este es el código:
>
> cat fichero1 | awk '{print $2}' | while read linea
> do
> esta=`grep $linea $fichero2 | wc -l`
> if [ $esta -eq 0 ]; then
> echo $linea >> FicheroNoEsta
> else
> echo $linea >> FicheroSiEsta
> fi;
> done
>
> Lo que necesito es hacerlo de otra forma porque esta que utilizo es
> muy pero que muy lenta por el tamaño de los ficheros. Hay alguna
> otra forma de busqueda mas rapida? Espero tu ayuda.
> Muchas gracias.
Veo el punto, pero en realidad no necesitas combinar "awk" con "grep",
pues que "awk" hace busqueda de patrones el mismo, asi que yo
intentaria alguna de estas opciones, usando solo "awk":
1.
- en el BEGIN, recorro todo el fichero1, y cargo los telefonos ($2) en
un arreglo.
- Proceso el fichero2, buscando si el telefono esta o no (en el
arreglo), y lo envio al respectivo archivo.
2.
- en el BEGIN, cargo todo el fichero2 en un arreglo.
- Proceso el fichero1, buscando cada telefono en el arreglo, y lo
envio al archivo respectivo.
Con cualquiera de los archivos en memoria (arreglo) y procesados con
un solo programa (awk) deberia funcionar mucho mas rapido.
Intentalo, y si tienes algun problema me cuentas de nuevo.
Diego Fernando
[] http://www.dfmarin.com