web-dev-qa-db-ja.com

長い1行のファイルでdiffを使用する

1行だけのファイルがあります。サイズは約20,000バイトです。

ファイルが変更されたので、どこにあるのか知りたいと思いました。

Diffを使用することを考えましたが、違いのある行が出力されるため、完全な行が表示されます。ただし、この場合は、ファイル内で違いのある唯一の行です。

だから私は違いが何であるかを見たかったのです。

何かアドバイス?

26
jperelli

通常のテキストのように多くの空白があると仮定して、ファイルを単語で分割し、それを通常のdiffツール(meldなど)と比較できます。

tr -s ' ' '\n' < file1.txt > file1.txt.split
tr -s ' ' '\n' < file2.txt > file2.txt.split
meld file1.txt.split file2.txt.split
14
Philipp Claßen

行内差分を行う差分を見つけます。 UNIXでは xxdiff を使用しています。 WinMerge はWindowsで行内差分を行うと思います。

他の答えも良いです:wdiff、またはチャンクに分割-パイプやコンマなどでデータを区切ると、チャンクの境界を定義するのが簡単になります。

4
Rich Homolka

これが1回限りの問題である場合、\n文字を50文字ごとに挿入してファイルのコピーを作成し、それらのコピーを比較します。 (50を選択した理由は、元のファイルの行番号の違いからバイトオフセットまでの計算が簡単になるためですが、見つけたものに基づいて上下に調整する可能性があります。)

3
Nicole Hamilton