web-dev-qa-db-ja.com

2つのファイルの違いを出力する方法(できればコマンドラインを使用)

私はtkDiffやWinMergeなどのツールに精通しており、2つのファイルの違いを確認する方法を知っています。

私がやろうとしているのは、別のファイルには存在しない要素のレポートを作成することです。

例えば:

File1の内容:

Apple
cool
dude
flan

File2に含まれるもの:

Apple
ball
cool
dude
elephant

次を含むレポートを作成したい:

ball
elephant

または、さらに良いことに、次のようなレポート:

+ball
+elephant
-flan

誰でもこれを行うことができるツールを知っていますか?できればコマンドラインオプションを使用してください。

WinMergeのレポート機能は私が望んでいるものからそれほど離れていませんが、これを行うためのコマンドラインオプションはありません(私の知る限り)。

前もって感謝します。

27
the_new_mr

nix comm utility が必要でしょう。 Windowsバージョン はgnuwin32に含まれています

名前

   comm - compare two sorted files line by line

あらすじ

   comm [OPTION]... FILE1 FILE2

説明

   Compare sorted files FILE1 and FILE2 line by line.

   With  no    options,  produce  three-column  output.  Column one contains
   lines unique to FILE1, column two contains lines unique to  FILE2,  and
   column three contains lines common to both files.

   -1     suppress lines unique to FILE1

   -2     suppress lines unique to FILE2

   -3     suppress lines that appear in both files
26

これはあなたのために働くかもしれません(GNU diff):

diff -u file1 file2 | sed -n '1,2d;/^[-+]/p'
+ball
-flan
+elephant
45
potong