数千行の2つのログファイルがあります。前処理後は、一部のラインのみが異なります。残りの行は、実際の違いまたは混合された行のグループです。
統合 diff では詳細な違いを見ることができますが、肉眼で手動で比較することは困難です。並列比較は比較にはより便利に見えますが、変更されていない数千行を追加することもあります。 2つの世界の利点を最大限に活用する方法はありますか?
これらのログファイルは、xscope
Xorgプロトコルデータを監視するプログラムによって生成されます。プロのWebサーバーアクセスログ分析ツールではなく、上記のような状況に適用できる一般的なツールを探しています。
2 つのサンプルログファイルは次の場所にあります。http://lekensteyn.nl/files/qemu-sdl-debug/(log13
そしてlog14
)。xscope-filter
タイムスタンプやその他の細かい詳細を削除する前処理コマンドはファイルにあります。
答え1
私が最も頻繁に使用する2つの比較ツールは次のとおりです。フュージョンそして違い。
フュージョン
MeldはGUIですが、ファイル間の違いをよく示しています。変更を片側から反対側に移動して変更をマージする機能を提供するため、ソフトウェア開発に適していますが、直接並列比較ツールとしても使用できます。
違い
私は長年このツールを使用してきました。私は通常、次のスイッチを使用して実行します。
$ sdiff -bBWs file1 file2
-b
空白量の変化を無視します。-W
すべてのスペースは無視されます。-B
すべての行が空の変更を無視します。-s
共通ラインは出力されません。
通常、ログファイルの場合は列をより広くする必要があり、それを使用して-w <num>
画面をより広くすることができます。
私が使用または使用していない他のツール
噴火
微分均一なdiff出力に色を割り当てるPythonスクリプト。
$ diffc [OPTION] FILE1 FILE2
Wimdiv
Wimdivおそらくmeldと同じくらい良いでしょう。良くなくても端末で実行できます。私はこのツールを使用することを忘れ続けますが、私はこのツールが日常的に使用するのが少し難しいことを知らせる良い指標です。しかし、YMMV。
答え2
現在、私はdiffとgrepを並べて複数行をフィルタリングしています。
diff -y -W250 log.txt log2.txt | expand | \
grep -E -C3 '^.{123} [|<>]( |$)' | colordiff | less -rS
- オプションを使用すると、
-W250
より多くのデータを表示できるように出力が広くなります。 expand
タブをスペースに変換する必要がある-C3
grep出力に3行のコンテキストを追加します。^.{123}
並んで違いを表示する前に、データの半分を一致させます。colordiff
出力をわかりやすくするless -rS
ANSI色の解釈を許可し(-r
)、改行を防ぎます(-S
)。
これはハッキングなので、代替案を歓迎します。
答え3
誰も言及していないICDIFFしかし、?素晴らしいです!写真は自分自身を言います。
答え4
Linuxの「sdiff」コマンドは、デフォルトですべての行を含む違いを並べて表示しますが、さまざまなオプションを使用して違いのみを表示することもできます。
sdiff -tWBs -w $COLUMNS config.xml config.xml.original
どこ
-t: タブをスペースに変換
-W:空白の違いを無視します。
-B: 空行を無視します。
-s: 同じ行を無視します。
-w $COLUMNS: 画面の全幅を使用します。
表示された行は、|、<、または>で区切られます。マニュアルを参照するか、自分で試してください。