2つのCSVファイルを比較し、一致するデータを取得します。

2つのCSVファイルを比較し、一致するデータを取得します。

file1.csvとfile2.csvという2つの.csvファイルがあります。

ファイル1.csv

ADIS
BAP3
Mercury_System
nxh-2003
DR_FeatureUP_PT

ファイル2.csv

ADIS,projects.adis
EcoSystems,projects.ecosystems
em1xxxsw,projects.em1xxxsw
BAP3,projects.bap3
Dirana4,projects.dirana4
Mercury_System,projects.mercury_system
nxh-2003,projects.nxh-2003
DocStore,projects.docstore
DR_FeatureUP_PT,projects.dr_featureup_pt

希望の出力.csv

ADIS,projects.adis
BAP3,projects.bap3
Mercury_System,projects.mercury_system
nxh-2003,projects.nxh-2003
DR_FeatureUP_PT,projects.dr_featureup_pt

以下のいくつかのコードを試しましたが、それらのどれも必要に応じて動作しませんでした。

grep -Ff file1.csv file2.csv > outfile.csv

awk -F, 'NR==FNR{seen[$0]++;next} ($1 in seen)' file1.csv file2.csv > outfile.csv

file1.csvには2500行が含まれ、file2.csvには118行が含まれているため、file2と一致する結果のみを比較して提供し、出力は118行/結果と一致する必要があります。

ベストアンサー1

file1.csvに行ごとに1つの列しかないと仮定すると、次のgrepは目的の結果を返す必要があります。 file1.csvの各行を検索文字列(針)として使用し、file2.csv(haystack)を検索します。

grep -f file1.csv file2.csv | tee outfile.csv

tee出力を表示してファイルに書き込むために追加しました。あなたの質問は、あなたが経験している問題について非常にあいまいです。私はRHELとDebianでこれを何度も実行し、サンプルコンテンツを使ってテストしました。私が望む結果を得ることができます。

おすすめ記事