ファイル間の違いを確認する方法

ファイル間の違いを確認する方法

私はstackoverflowコミュニティで他の同様のリンクを見つけましたが、私の質問に正確には答えませんでした。

行数が異なる2つのファイルがありますが、両方とも並べ替えました。私の元のファイルの長さは数百行でしたが、トラブルシューティングのためにfile1を12行に、file2を5行に設定しました。ファイル 2 はファイル 1 のサブセットです。私が望むのは、file1にはあるがfile2にはないすべての行を出力するコマンドを実行することです。

Unixコマンドを試してみましたdiffが、commすべてfile1の内容全体を一覧表示しましたが、これは私が望むものではありません。

簡単な例は次のとおりです。

File1      File2
A           B
B           E
C           I
E           N
G           O
I
L
M
N
O
X

ここでは、file2のすべての内容がfile1にあることがわかります。何らかの理由で、diff両方ともcommfile1の内容全体を表示します。ファイル全体を検索するのではなく、1行ずつ比較するからだそうです。

私が期待する結果を出力する別のUnixコマンドはありますか?

編集:私が望むものを得るために使用するコマンドは次のとおりです。

a) ファイル1をファイル2と比較する

これは、デフォルトでfile1のすべての項目を<前にリストし、内容がfile1の内容であることを示し、前にはfile2のすべての項目をリストする>を表示します。確かに私に必要なわけではありません。

b)通信-23文書1文書2

これは、期待した違いではなく、file1の内容全体を再表示します。私も

C)コミュニケーション-3文書1文書2

commのヘルプページによると、ファイル1の行は印刷されますが、ファイル2の行は印刷されず、その逆も同様です。ただし、B / Cの例では、Bは両方のファイルに表示されますが、目的の内容は表示されません。別のライン。しかし、出力ではそれが1つにあり、もう1つにはないと思って印刷します。したがって、出力は次のようになります。

A
B
    B
C
E
    E
etc.

これは私が期待したものではありません。楽しみにしています。

A
C
G
L
M
X

ベストアンサー1

ファイルAからファイルbの内容を逆グレープするだけです。

例:

francois@zaphod:/tmp$
 cat > A
az
ae
ar
at
ay
au
francois@zaphod:/tmp$
 cat > b
ba
by
ay
at
au
francois@zaphod:/tmp$
  grep -v "$(cat /tmp/b)" /tmp/A
az
ae
ar
francois@zaphod:/tmp$

ここの出力はファイル b にはないファイル A の行です。

おすすめ記事