我有两个 .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 上多次执行此操作,并且刚刚使用您的示例内容进行了测试。我能够达到您想要的结果。