2つのファイルを比較し、最初のファイルにない別のファイルを作成する方法は?

2つのファイルを比較し、最初のファイルにない別のファイルを作成する方法は?

file1含む:

100
200
300
400

file2含む:

500
600
700
200
300

予想される出力ファイルは次のとおりです。

500
600
700

答え1

出力がソートされるのが気に入らない場合は、次のものを使用できます。comm

comm -13 <(sort /tmp/file1) <(sort /tmp/file2)

出力(暗黙的なソート):

500
600
700

答え2

そしてjoin

join -j 1 -v 2 <(sort file1) <(sort file2)

どこ:

  • -j結合フィールドの定義
  • -v接続線の抑制

または以下を使用してawk

awk 'NR==FNR{a[$1]++} !a[$1]' file1 file2
  • 最初のファイルが配列にロードされます。a
  • 次に、2番目のファイルを処理するときに値がa存在しない場合は、次の行を印刷します。

関連情報