2つのファイルの行を比較したいのですが、出力のノイズを最小限に抑えるために、実際の行の違いだけを印刷します。
たとえば、次の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シェルツール。
wdiff の使用:
$ 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ツールではありませんが、一般的に利用可能です。