私が2つのファイルを持っていると言います:a.txt
とb.txt
。
a.txt
の内容:
hello world
b.txt
の内容:
hello world
something else
もちろん、vimdiff
を使用してそれらの違いを確認できます。a.txt
がb.txt
のサブセットであることを確認できます。つまり、b.txt
には既存のすべての行を含める必要がありますa.txt
(上記の例のように)。
私の質問は、b.txt
には存在するがa.txt
には存在しない行をファイルに記録する方法ですか?
comm -1 -3 a.txt b.txt > c.txt
-1
はa.txt
だけにある行を除外し、-3
は両方にある行を除外します。したがって、b.txt
にのみ含まれる行のみが出力されます(詳細については、man comm
またはcomm --help
を参照してください)。出力はc.txt
にリダイレクトされます
2つのファイルの違いが必要な場合は、diff
ではなくcomm
を使用してください。例えば.
diff -u a.txt b.txt > c.txt
サブセットを気にしない場合は、
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