Comparando linea por linea dos archivos en bash

February 11th, 2010

Frecuentemente me veo en la necesidad de comparar archivos no sorteados linea por linea sobre todo para parceo de configuraciones y cada que lo requiero tengo que buscar de nuevo la info en internet, asi que para futuras referencias pongo aqui el metodo mas sencillo que me he encontrado, basicamente se guarda un archivo en en descriptor 7, se abre linea por linea y se va comparando toda la linea abierta contra todas las lineas de otro archivo abierto en el momento, quienes hayan intentado hacerlo me entenderan ya que en bash si abres dos archivos a la vez cierra el primero para permitirte trabajar con el segundo.


aduarte@aduarte:/$ cat a.txt
b
c
d

aduarte@aduarte:/$ cat b.txt
1
2
3

aduarte@aduarte:/$ cat opentowfiles.sh
#!/bin/bash
exec 7
cat <&7 | while read LA
do
cat b.txt | while read LB
do
echo $LA $LB
done
done

aduarte@aduarte:/$ ./opentowfiles.sh
b 1
b 2
b 3
c 1
c 2
c 3
d 1
d 2
d 3

One Response to “Comparando linea por linea dos archivos en bash”

  1. alvarezp Says:

    while read LA; do
    while read LB; do
    echo $LA $LB
    done < <(cat a.txt)
    done < <(cat b.txt)

Leave a Reply

Connect with Facebook