awk ‘NR == FNR { A[$0]=1; next } !A[$0]’ fichero1.txt fichero2.txt >> Diferenciaficheros.txt
Si queremos sacar dentro de ficheros sin que esten repetidos.
uniq es el encargado de eliminar las redundancias. Por ejemplo si deseamos obtener un listado de la gente conectada al ordenador en un momento dado deberemos hacer uso de who y de cut.
cat spa1.txt | uniq
Otras herramientas de consultar diferencias.
cmp es la más básica de todas. Compara dos ficheros e indica, si la hay, el lugar donde se produce la primera diferencia (número de caracter y línea de la diferencia)
$ cmp antigua nueva
antigua nueva differ: char 11234, line 333
comm es algo más avanzado. Su salida se produce en 3 columnas. La primera contiene las lineas únicas del primer fichero, la segunda las únicas del segunda y la tercera las comunes. Dispone de parametros númericos que establecen si deseas eliminar alguna de esas columnas. Son la -1 , -2 y -3 que indican a comm que no visualizen la primera, segunda y tercera columna. Con este ejemplo se observa las lineas que sólo están en el primer fichero y las comunes.
$ comm -2 antigua nueva
Por último está diff. Es una herramienta fundamental en programación de proyectos avanzados. Si alguna vez ha bajado un kernel para compilarlo sabrá que puede bajarse los fuentes de la nueva o bajarse el patch con respecto a la anterior, que suele ser un fichero más pequeño . Ese patch suele terminar en .diff lo que indica que es el resultado de una salida diff. Esta herramienta contiene una serie de comandos de editor ( vi , rcs ) de tal manera que se hagan idénticos los 2 ficheros. También es aplicable a directorios y todos los archivos que lo contienen. La utilidad es muy clara, al tener que bajar menor cantidad de fuente ( solo los cambios ) se aplica el parche ( con patch ) y se vuelve a compilar. Sin parametros la salida específica en estos formatos como se deben hacer los cambios de tal manera que el primero sea igual al segundo con comandos vi.
$ diff antigua nueva
3c3
< El Hobbit
—
> El Señor de los Anillos
78a79,87
> Tres anillos para los Reyes Elfos bajo el cielo.
> Siete pera los Señores Enanos en casas de piedra.
> Nueve para los Hombres Mortales condenados a morir.
> Uno para el Señor Oscuro, sobre el trono oscuro
> en la tierra de Mordor donde se extienden las Sombras.
> Un Anillo para gobernarlos a todos. Un Anillo para encontrarlos,
> un anillo para atraerlos a todos y atarlos a las tinieblas
> en la tierra de Mordor donde se extienden las Sombras.
3c3 expresa que se debe cambiar la línea 3 , quitando «El Hobbit» y substituyendolo por «El Señor de los Anillos».
78a79,87 indica que se debe insertar unas nuevas lineas 79 a la 87.