두 개의 CSV 파일을 비교하고 일치하는 데이터를 얻습니다.

두 개의 CSV 파일을 비교하고 일치하는 데이터를 얻습니다.

file1.csv와 file2.csv라는 두 개의 .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의 각 행을 검색 문자열(바늘)로 사용하고 file2.csv(haystack)를 검색합니다.

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

tee출력을 보고 파일에 쓸 수 있도록 추가했습니다 . 귀하의 질문은 귀하가 겪고 있는 문제에 대해 매우 모호합니다. 저는 RHEL과 Debian에서 이 작업을 여러 번 수행했으며 예제 콘텐츠를 사용하여 테스트했습니다. 내가 원하는 결과를 얻을 수 있어요.

관련 정보