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에서 이 작업을 여러 번 수행했으며 예제 콘텐츠를 사용하여 테스트했습니다. 내가 원하는 결과를 얻을 수 있어요.