У мене є 2 файли, що містять список пісень. hdsongs.txt і sdsongs.txt
Я написав простий скрипт, щоб перелічити всі пісні та вивести текстові файли, щоб потім запустити розріз. Він працює чудово здебільшого, але фактична команда diff у сценарії показує ту саму лінію, що й інша. Це насправді відбувається для декількох рядків, але не для всіх.
Ось приклад пісні в обох файлах:
$ grep Apologize \*songs\*
hdsongs.txt:Timbaland/Apologize.mp3
sdsongs.txt:Timbaland/Apologize.mp3
Немає жодного особливого символу, який я бачу:
$ cat -A hdsongs.txt sdsongs.txt | grep Apologize
Timbaland/Apologize.mp3$
Timbaland/Apologize.mp3$
Коли я запускаю diff, він показує той самий рядок, що є у кожному файлі; але чи не однакові лінії?
$ diff hdsongs.txt sdsongs.txt | grep Apologize
> Timbaland/Apologize.mp3
< Timbaland/Apologize.mp3
Це схоже на нитку тут: у звітах diff два файли відрізняються, хоча вони однакові!
але це стосується рядків у файлі, а не для всього файлу, і роздільна здатність, схоже, не підходить у цьому випадку.
$ 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
Хтось знає, чому diff повідомив би той самий рядок удвічі більше подібного?
hexdump
цих двох рядків і подивіться, чим відрізняється?