2つのCSVファイルを比較し、独自の履歴を表示するには?

2つのCSVファイルを比較し、独自の履歴を表示するには?

次のように2つのcsvファイルがあり、file1とfile2を比較したいと思います。レコードがfile2にある場合は、file1から行全体を削除する必要があります。ここで比較されるフィールドは、ソースファイルの場所11のIDです。

ファイル1.CSV

"NAME","CITY","MARKS","ID","C","NAME1","TYPE"
"A","XY","100","12","","31420","TYPE1"
"A","XY","100","13","","31420","TYPE1"

ファイル2.CSV

"ID"
"11"
"12"
"25"

期待される出力

"NAME","CITY","MARKS","ID","C","NAME1","TYPE"
"A","XY","100","13","","31420","TYPE1"

ベストアンサー1

次のユーティリティを使用してくださいcsvkit(私のUbuntuシステムのパッケージpython3-csvkit):

$ csvsql --query '
  SELECT * FROM FILE1 WHERE ID NOT IN (SELECT ID FROM FILE2)
' FILE1.CSV FILE2.CSV | csvformat -U1
"NAME","CITY","MARKS","ID","C","NAME1","TYPE"
"A","XY","100","13","","31420","TYPE1"

おすすめ記事