두 파일 사이에 일부 겹치는 열이 있는 두 개의 csv 파일이 있습니다. 한 파일의 이름은 A.csv이고 다른 파일의 이름은 B.csv라고 가정합니다. A와 B의 교차점을 C라고 합니다.
세 개의 새로운 csv 파일을 생성하고 싶습니다. C; B에서 C를 뺀 부분 집합을 D라고 부르고 A와 D를 합친 것을 E라고 부릅니다.
무거운 프로그래밍 언어를 적용하지 않고 Linux/Unix에서 명령을 사용하여 이를 수행할 수 있는 방법이 있습니까?
답변1
나는 이것을 하기 위해 파이썬을 사용할 것입니다. 파이썬에 겁먹지 마세요. 파이썬은 이런 종류의 일에 아주 좋습니다. 귀하의 문제에 대한 나의 (대략적이고 테스트되지 않은) 해결책은 다음과 같습니다.
f_csv_1 = open("csv1.csv")
f_csv_2 = open("csv2.csv")
csv_1 = f_csv_1.readlines()
csv_2 = f_csv_2.readlines()
f_csv_1.close()
f_csv_2.close()
intersection = list(set(csv_1) & set(csv_2))
union = list(set(csv_1) | set(csv_2))
out_1 = open("intersection.csv", "w")
for row in intersection:
out_1.write("%s" % row)
out_2 = open("union.csv", "w")
for row in union:
out_2.write("%s" % row)
out_1.close()
out_2.close()