現在のファイルとターゲットの違いを見つけるために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番目の質問:これらのコード2d1
と3a3
やその他のコードを取り除くにはどうすればよいですか。
これらのコードは、行番号と見つかった違いのタイプを示します。
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 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
必要に応じて、そのエイリアスを作成できます。