diff informa la misma línea que diferente en 2 files

Tengo 2 files que contienen una list de canciones. hdsongs.txt y sdsongs.txt

Escribí un guión simple para enumerar todas las canciones y enviarlas a files de text, para luego ejecutar un diff en contra. Funciona bien en su mayor parte, pero el command actual diff en el script muestra la misma línea que ser diferente. Esto realmente está sucediendo en varias líneas, pero no en todas.

Aquí hay un ejemplo de una canción en ambos files:

$ grep Apologize \*songs\* hdsongs.txt:Timbaland/Apologize.mp3 sdsongs.txt:Timbaland/Apologize.mp3 

No hay un personaje especial final que pueda ver:

 $ cat -A hdsongs.txt sdsongs.txt | grep Apologize Timbaland/Apologize.mp3$ Timbaland/Apologize.mp3$ 

Cuando ejecuto diff, muestra la misma línea en cada file; pero no son las líneas las mismas?

 $ diff hdsongs.txt sdsongs.txt | grep Apologize > Timbaland/Apologize.mp3 < Timbaland/Apologize.mp3 

Esto es similar al hilo aquí: los informes diff difieren dos files, ¡aunque son iguales!

pero esto es para líneas dentro del file, no para todo el file, y la resolución no parece encajar en este caso.

 $ diff <(cat -A phonesongsonly.txt) <(cat -A passportsongsonly.txt) | grep Apologize < Timbaland/Apologize.mp3$ > Timbaland/Apologize.mp3$ $ wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" hdsongs.txt sdsongs.txt | grep Apologize >Timbaland/Apologize.mp3 >Timbaland/Apologize.mp3 

¿Alguien sabe por qué diff informaría la misma línea dos veces como esta?

Supongo que simplemente no has orderado los files. Ese es uno de los comportamientos que puede get en la input sin clasificar:

 $ cat file1 foo bar $ cat file2 bar foo $ $ diff file1 file2 1d0 < foo 2a2 > foo 

Pero, si ordera:

 $ diff <(sort file1) <(sort file2) $ 

El trabajo del progtwig diff es decirle si dos files son idénticos y, de no ser así, dónde difieren. No está diseñado para encontrar similitudes entre diferentes líneas. Si la línea X del file no es la misma que la línea X del otro, entonces los files no son lo mismo. No importa si contienen exactamente la misma información, si esa información está organizada de una manera diferente, los files se informan como diferentes.

Como no ha declarado que los files están orderados, supongo que no. Este es el resultado esperado de diff cuando aparece una línea en ambos files, pero en diferentes ubicaciones. Esto sería claro si miraras la salida completa de diff , en lugar de pasarla por grep .

Sugeriría intentar usar algo como el progtwig hexdiff para get un resultado binary / hexadecimal, ya que el ojo humano no siempre puede distinguir entre los caracteres que muestra una computadora, y es posible que algunos caracteres no se muestren.