比较两个 csv 文件并获取匹配的数据

比较两个 csv 文件并获取匹配的数据

我有两个 .csv 文件,即 file1.csv 和 file2.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 每行只有一列,以下 grep 应返回所需的结果。这使用 file1.csv 中的每一行作为搜索字符串(needle)并搜索 file2.csv(haystack)。

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

我添加了tee这样您就可以看到输出并将其写入文件。您的问题对于您遇到的问题非常模糊。我已经在 RHEL 和 Debian 上多次执行此操作,并且刚刚使用您的示例内容进行了测试。我能够达到您想要的结果。

相关内容