両方のファイルの行を比較したいのですが、出力のノイズを最小限に抑えるために、行の実際の違いだけを印刷したいと思います。
たとえば、次の2つのファイルがあるとします。
a.txt
a b c d e f g h i j k l m n o p q r s t u v w x y z
b.txt
a B c d e f g h i j k l m n o p q r s t u v w x y z
(その違いは文字の大文字の使用ですb
。)
出力が次のようになります。
[-b-]{+B+}
現在私が見つけた最良の方法はを使用することですが、git diff --word-diff
行全体を出力します。
a [-b-]{+B+} c d e f g h i j k l m n o p q r s t u v w x y z
出力を手動で解析する以外に、より直接的な方法はありますか?また、理想的には、git diff
追加のパッケージをインストールする必要がないPOSIXシェルツールよりも一般的なものを使用することをお勧めします。
答え1
使用違い:
$ wdiff -3 a.txt b.txt
======================================================================
[-b-] {+B+}
======================================================================
-3
orオプションは、---no-common
2つのファイル間の共通の単語を削除し、違いのみを表示します。
バナー===...
(および空白行)は次の方法で削除できますgrep
。
$ wdiff -3 a.txt b.txt | grep -vx '=*'
[-b-] {+B+}
wdiff
diff
orオプションを指定すると、-d
一様なデータを読み取ることもできます--diff-input
。例git
:
git diff somefile | wdiff -d -3
POSIXツールではありませんが、wdiff
一般的に使用されます。