「diff」のこれらのコードは何を意味し、それらを削除するには?

「diff」のこれらのコードは何を意味し、それらを削除するには?

diff現在のファイルとターゲットの違いを見つけるために使用します。

私のコマンドは diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt

出力は次のとおりです

8c8,9
> VM-E

私はこれを次のようにフィルタリングしました。 diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt | tail -n +2 | sed 's/> //g'

途方もない。ここでいくつかの違いがある場合は、次のように表示されます。

2d1
< esxi02
3a3
> psc-dr

2つの質問。この価値は何ですか?<値が存在しますfrom-fileが、存在せず、to-fileその逆も同様です>

2d12番目の質問:このコードおよび3a3/または何が起こっても、どのように削除しますか?

ベストアンサー1

このコードは行番号と見つかった違いの種類を提供します。

  • a追加されたことを示します。
  • c変更
  • d削除済み

例:8c8,9最初のファイル()の8行が--from-file次に変更されたことを意味します。この2番目のファイルの8行から9行に保存されます。これは2d1、最初のファイルの2行目が削除され、2番目のファイルの1行目の後に来ると予想されるなどの意味です。

私はあなたがこのコードを本当に削除したくないと思います。これは非常に便利ですが、コードを削除するか、別のものに変更する必要がある場合は、次の6つの出力形式を使用してください(ここではGNU diffを使用しているとします)。 ):

  • --old-line-format
  • --new-line-format
  • --old-group-format
  • --new-group-format
  • --changed-group-format
  • --unchanged-group-format

ここでは、(やや複雑な)構文に関するすべての詳細については説明しません。以下にそのinfo diff説明を見つけることができます。if-then-else章。以下のコードは、あなたが要求するものを正確に提供します。つまり、コードがまったくなく、純粋な<合計のみが提供されます>

diff --old-line-format=$'< %l\n' --new-line-format=$'> %l\n' \
     --old-group-format=$'%<' --new-group-format=$'%>' \
     --changed-group-format=$'%>' --unchanged-group-format='' file1 file2

必要に応じてエイリアスを作成できます。

おすすめ記事