色の違いを出力する方法は?

色の違いを出力する方法は?

Unixファイルを条件付きでフォーマットしたいと思います。現在、コマンド操作を実行しており、コマンドでテキスト出力diff形式を指定できるかどうかを知りたいです。diff

例:

一致する値は緑色で表示する必要があります。
一致しない値は赤で表示する必要があります。

file12つのファイルがあり、file2私のコマンドはdiff file1 file2

これで、出力に5つの不一致が含まれていると仮定し、これらの不一致は赤で表示する必要があります。 Unixを使用してこれを達成するには?

つまり、「一致しない値の場合は、diffコマンドの出力色を赤に変更します」

ベストアンサー1

diff --colorオプションが追加されましたGNUの違い3.4(2016-08-08)

これはほとんどのディストリビューションでは基本的な実装でありdiff、まもなく提供されます。

Ubuntu 18.04にはdiffutils3.6があるので、それもあります。

3.5では、次のようになります。

ここに画像の説明を入力してください。

テスト:

diff --color -u \
  <(seq 6 | sed 's/$/ a/') \
  <(seq 8 | grep -Ev '^(2|3)$' | sed 's/$/ a/')

コミットc0fa19fe92da71404f809aafb5f51cfd99b1bee2(2015年3月)に追加されたようです。

単語レベルの違い

良いdiff-highlight。できないようです。機能要求:https://lists.gnu.org/archive/html/diffutils-devel/2017-01/msg00001.html

関連トピック:

ydiffただし、以下を参照してください。

ydiff並んで単語レベルの違い

https://github.com/ymattw/ydiff

これはナバナですか?

python3 -m pip install --user ydiff
diff -u a b | ydiff -s

結果:

ここに画像の説明を入力してください。

行が狭すぎる(デフォルトは80列)、次のコマンドを使用して画面に合わせます。

diff -u a b | ydiff -w 0 -s

テストファイルの内容:

1
2
3
4
5 the original line the original line the original line the original line
6
7
8
9
10
11
12
13
14
15 the original line the original line the original line the original line
16
17
18
19
20

第二

1
2
3
4
5 the original line teh original line the original line the original line
6
7
8
9
10
11
12
13
14
15 the original line the original line the original line the origlnal line
16
17
18
19
20

ydiffGitの統合

ydiffGitと統合されているため、設定は不要です。

代わりに、gitリポジトリ内でgit diff次のことができます。

ydiff -s

代わりにgit log:

ydiff -ls

また見なさい:https://stackoverflow.com/questions/7669963/how-can-i-get-a-side-by-side-diff-when-i-do-git-diff/14649328#14649328

Ubuntu 16.04、git 2.18.0、ydiff 1.1でテストされました。

おすすめ記事