[Script] Pequeña ayuda comparando dos ficheros

Buenas a todos.

Tengo dos ficheros, cuya estructura son un montón de líneas. Lo que quiero es, línea a línea, comprobar si las líneas del primero existen en el segundo; es decir, cojo la primera línea del fichero A, y la busco en todo el fichero B, cojo la segunda, y la busco en todo el fichero B...
Si se ha encontrado, perfecto, pero si no, la línea que no se ha encontrado la exporto a un fichero de texto.

Resultado/resumen del script: En el fichero de texto exportado quedan almacenadas todas las líneas del fichero A que NO están en el fichero B.

Cómo lo haríais vosotros? Alguna pista o método rápido para hacerlo? Había pensado en awk, pero lo tengo un poco oxidado (para qué mentir, no me acuerdo de casi nada...).

Cualquier ayuda es bienvenida, ahora mismo no sé por donde cogerlo. Especialmente la búsqueda recursiva.
Parece un trabajo de..., bah, dejemoslo...

Creo que esas cosas se hacian con "diff", segun he visto en su ayuda ya tiene opciones para diferentes modos de salida ya sea para mostrar solo cambios, formas de exportacion o simplemente distintas formas de mostrarlo ^^.

Ya el tema es a gusto del consumidor.
blackgem escribió:Parece un trabajo de..., bah, dejemoslo...

Creo que esas cosas se hacian con "diff", segun he visto en su ayuda ya tiene opciones para diferentes modos de salida ya sea para mostrar solo cambios, formas de exportacion o simplemente distintas formas de mostrarlo ^^.

Ya el tema es a gusto del consumidor.


Gracias por la ayuda.
No sé si con la primera línea insinúas que quiero que me hagan los deberes (no la he entendido muy bien).
Pero por si alguien tiene curiosidad, el objetivo me lo he propuesto yo y se trata de ver qué enlaces han borrado de mi cuenta de megaupload.
El fichero A contiene los enlaces en un instante concreto. El fichero B es un fichero recién exportado vía curl con los actuales. Pretendo que si faltan enlaces me avise por correo electrónico. El script se ejecutaría de forma periódica vía cron.

Uno que está aburrido, oye [ginyo]

Saludos!
Imagino que habrá métodos más eficientes, pero se me ocurre que podría hacerse con grep, no? Algo como:

while leer línea de A
existe=grep línea ficheroB
if (!existe) echo linea > fichero_no_existen
done

(pedazo pseudocódigo me he marcado XD)
Yo haría un sort de ambos ficheros y luego un diff. Parece lo más fácil y rápido.

- ferdy
Muchas gracias a todos por vuestras respuestas :)

Lo malo que le veía al diff es que las parejas de cadenas tienen que estar en la misma línea, y eso no tiene por qué ser así.

Me he quedado con la solución de Kedao, bastante corta y sencilla (eficiente ya no lo sé, pero imagino que grep lo será).

Bueno, al caso, tengo un último problema. Las líneas a analizar tienen (la gran mayoría de las veces) corchetes. No me acordaba de que grep no los traga, imagino que porque tienen una función concreta en las expresiones regulares.
Alguna forma de que se trague los corchetes sin recurrir a modificar la cadena?.
Y si no la hay, alguna forma de introducir "\" delante de cada corchete encontrado de forma fácil?.
Estoy mirando el man del grep, pero no encuentro la forma.

Saludos!
El_RapEro escribió:Y si no la hay, alguna forma de introducir "\" delante de cada corchete encontrado de forma fácil?.


Si tienes la línea dentro de la variable $linea, en bash:
linea=${linea//{/\\{}
amuchamu escribió:
El_RapEro escribió:Y si no la hay, alguna forma de introducir "\" delante de cada corchete encontrado de forma fácil?.


Si tienes la línea dentro de la variable $linea, en bash:
linea=${linea//{/\\{}


Simplemente perfecto :p

Muchas gracias.
7 respuestas