web-dev-qa-db-ja.com

2つのファイルの違いをファイ​​ルに書き込む方法

私が2つのファイルを持っていると言います:a.txtb.txt

a.txtの内容:

hello world

b.txtの内容:

hello world
something else

もちろん、vimdiffを使用してそれらの違いを確認できます。a.txtb.txtのサブセットであることを確認できます。つまり、b.txtには既存のすべての行を含める必要がありますa.txt(上記の例のように)。

私の質問は、b.txtには存在するがa.txtには存在しない行をファイルに記録する方法ですか?

2
Yves
comm -1 -3 a.txt b.txt > c.txt

-1a.txtだけにある行を除外し、-3は両方にある行を除外します。したがって、b.txtにのみ含まれる行のみが出力されます(詳細については、man commまたはcomm --helpを参照してください)。出力はc.txtにリダイレクトされます

2つのファイルの違いが必要な場合は、diffではなくcommを使用してください。例えば.

diff -u a.txt b.txt > c.txt
8
cas

サブセットを気にしない場合は、

diff a.txt b.txt|grep ">"|cut -c 3- > foo.txt

$ cat a.txt
hello world
$ cat b.txt
hello world
something else
$ diff a.txt b.txt|grep ">"|cut -c 3- > foo.txt
$ cat foo.txt
something else
2
Utsav