線間の違いを強調

線間の違いを強調

ほぼ同じ行がありますが、いくつかの違いを持つファイルがありますが、各行の違いを強調したいと思います。

例:

  • 敏捷な茶色のキツネは怠惰な犬の上に跳んだ。
  • CK茶色キツネ飛躍その怠惰な犬を通り過ぎてください。
  • 石の腕がキツネが飛び出したVよく非常に怠惰な犬。
  • 石の腕はキツネが跳ぶ本物非常に怠惰な犬。

(ここで太字は前の行に比べて挿入および変更された文字を表示し、次の行に削除された文字はイタリック体で表示します。)

ハイライトは例とまったく同じではなく、どの文字が追加、変更、または削除されたかを示す必要があります。そして、各行の実際のテキストが依然として元のテキストと同じであることを強調表示してください(たとえば、1行に古い文字と新しい文字を印刷しないなど)。

私は何かを作成しようとしましたがdwdiff(行を繰り返して連続した行を比較)、削除された文字を強調表示する方法が見つかりませんでした。

infile=$1
line1=
line2=
lineNo=0
while IFS="" read -r nextLine || [ -n "$nextLine" ]; do
    line1=$line2
    line2=$nextLine

    if [[ "$lineNo" -gt 0 ]]; then
        dwdiff -1 -c <(printf '%s\n' "$line1") <(printf '%s\n' "$line2")
    else
        printf '%s\n' "$line2"
    fi

    lineNo=$((lineNo+1))
done

理想的には、違いは実際に文字に適用されますが、単語レベルの違いも適用されます。

この結果を得る方法はありますかdwdiff?それともこれを行うための既存のツールはありますか?

関連情報