2つの異なるcsvファイルの2つの列の比較

2つの異なるcsvファイルの2つの列の比較

私の目的は、2つの異なるcsvファイルの特定の列を比較し、最初のファイルにない2番目のファイルからデータをインポートすることです。例えば。

最初のファイル

"siddhartha",1
"mukherjee",2

2番目のファイル

"siddhartha",1
"mukherjee",2
"unique",3

期待される出力

"unique",3

次のコマンドは、最初の列のテキストサイズが制限されているとうまく機能するため、上記の例でもうまく機能します。

awk -F',' 'FNR==NR{a[$1];next};!($1 in a);' file1.csv file2.csv > file3.csv

ただし、最初の列のテキストサイズはかなり大きく(たとえば10000文字)、機能しません。特定のポイントでテキストを切り取ります。

解決策はありますか?

ベストアンサー1

上記の簡単な例に基づいてこれが機能します。最初の列のデータが別の列で終わるか、データに空白がある場合は失敗します。

bashとGNU grepを使用してください。

grep -v -Ff <(cut -d',' -f 1 file1.csv) file2.csv > file3.csv

説明する

  • -v逆マッチング
  • -Ffファイルをスキーマソースとして使用する
  • <(cut -d',' -f 1 file1.csv)データの最初の列を取得し、「ファイル」として使用します。

おすすめ記事