Respuestas:
La respuesta más obvia es usar el comando diff y probablemente sea una buena idea agregarle el parámetro --speed-large-files.
diff --speed-large-files a.file b.file
Menciona archivos sin clasificar, por lo que tal vez necesite ordenarlos primero
sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted
podría guardar la creación de un archivo de salida adicional canalizando la salida de la segunda clase directamente en diff
sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -
Obviamente, estos funcionarán mejor en un sistema con mucha memoria disponible y es probable que también necesite mucho espacio libre en el disco.
No quedó claro a partir de su pregunta si ha probado esto antes. Si es así, sería útil saber qué salió mal (tardó demasiado, etc.). Siempre he descubierto que los comandos stock sort y diff tienden a funcionar al menos tan bien como los comandos personalizados, a menos que haya algunas propiedades específicas de dominio de los archivos que permitan hacer las cosas de manera diferente.
diff <(command 1) <(command 2)
<(cmd1) <(cmd2)funciona la sintaxis (¡ya que suena como redireccionar la entrada estándar dos veces!), Intente echo hello <(cmd1) <(cmd2). Verás algo como lo hello /dev/fd/63 /dev/fd/62que de repente deja en claro;)
--speed-large-filesopción no ayuda si no tienes suficiente RAM. Además, la clasificación previa no es útil si tiene una estructura de registro de varias líneas que desea conservar. Las opciones mencionadas anteriormente (por @unhammer) son interesantes, pero el resultado de rdiffy bsdiffes bastante binario. La instalación bdiffdesde Heirloom Toolbox parece una tarea difícil (requiere herramientas de desarrollo de Heirloom, archivos de encabezado extintos, ...). ¿Realmente vale la pena el esfuerzo? ¿Hay otras alternativas?
Ordenar las entradas y decirle al diffprograma que sus entradas están ordenadas proporcionaría una velocidad masiva. No conozco ninguno diffcon una opción como esa, pero commsupone una entrada ordenada y será mucho más rápido si hace lo suficiente para sus propósitos.
commfuncionó muy bien para esto, nunca antes había oído hablar de él pero aparentemente está en coreutils
mkfifopara crear[ab].file.sortedantes de usarlos como salida parasort. Ponga ambossorts&en el fondo y use los dos canales como nombres de archivo para diff.