web-dev-qa-db-ja.com

'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にはないことを意味します。>はその逆です。

2番目の質問:これらのコード2d13a3やその他のコードを取り除くにはどうすればよいですか。

6
suhas savkoor

これらのコードは、行番号と見つかった違いのタイプを示します。

  • aは追加の略
  • cが変更されました
  • dを削除しました

例えば: 8c8,9は、最初のファイル(--from-file)はsomethingに変更され、これはsomethingが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 diffIf-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

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

10
jimmij