曲のリストを含む2つのファイルがあります。hdsongs.txtおよびsdsongs.txt
すべての曲とテキストファイルへの出力を一覧表示し、diffを実行する簡単なスクリプトを作成しました。ほとんどの場合は正常に機能しますが、スクリプト内の実際の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は2つのファイルが異なることを報告しますが、それらは同じです!
しかし、これはファイル全体ではなくファイル内の行のためであり、その場合の解像度はこの場合に収まらないようです。
$ 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が同じ行をこのように2回報告する理由を誰もが知っていますか?
hexdump
これらの2行を試して、何が違うのか見てみましょう