Unixファイルを条件付きでフォーマットしたいと思います。現在、コマンド操作を実行しており、コマンドでテキスト出力diff
形式を指定できるかどうかを知りたいです。diff
例:
一致する値は緑色で表示する必要があります。
一致しない値は赤で表示する必要があります。
file1
2つのファイルがあり、file2
私のコマンドはdiff file1 file2
。
これで、出力に5つの不一致が含まれていると仮定し、これらの不一致は赤で表示する必要があります。 Unixを使用してこれを達成するには?
つまり、「一致しない値の場合は、diffコマンドの出力色を赤に変更します」
ベストアンサー1
diff --color
オプションが追加されましたGNUの違い3.4(2016-08-08)
これはほとんどのディストリビューションでは基本的な実装でありdiff
、まもなく提供されます。
Ubuntu 18.04にはdiffutils
3.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
関連トピック:
- https://stackoverflow.com/questions/1721738/using-diff-or-anything-else-to-get-character-level-diff-Between-text-files
- ライン内の違い
- https://superuser.com/questions/496415/using-diff-on-a-long-one-line-file
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
ydiff
Gitの統合
ydiff
Gitと統合されているため、設定は不要です。
代わりに、gitリポジトリ内でgit diff
次のことができます。
ydiff -s
代わりにgit log
:
ydiff -ls
Ubuntu 16.04、git 2.18.0、ydiff 1.1でテストされました。