Eu usaria python para isso, não se deixe intimidar pelo python, é ótimo nesse tipo de coisa. Minha solução (áspera e não testada) para o seu problema seria:
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()