
2 つのファイルの行を比較したいのですが、出力のノイズを最小限に抑えるために、行の実際の違いだけを印刷したいと思います。
たとえば、次の 2 つのファイルがあるとします。
.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
と---no-common
、2 つのファイル間で共通する単語が削除され、相違点のみが表示されます。
バナー===...
(および空行)は次のようにして削除できますgrep
。
$ wdiff -3 a.txt b.txt | grep -vx '=*'
[-b-] {+B+}
wdiff
またはオプションdiff
を指定すると、統合データも読み取ることができます。たとえば、次のようになります。-d
--diff-input
git
git diff somefile | wdiff -d -3
wdiff
POSIX ツールではありませんが、一般的に利用可能です。