比较两个csv文件并在单独的csv上写入丢失的数据

时间:2019-02-27 06:22:57

标签: linux shell csv awk

请协助我处理awk scenerios

我有两个csv,我需要比较两个csv文件,并且必须在单独的csv文件中写入缺少的列值以及表名

File.csv

Table Name  Column Name
Class5  Tamil
Class5  English
Class5  Maths
Class5  Physics
Class5  Chemistry
Class6  Tamil
Class6  English
Class6  Maths
Class6  Chemistry
Class7  Tamil
Class7  English
Class7  Maths
Class7  Physics
Class7  Chemistry

File2.csv 

Table Name  Column Name
Class5  Tamil
Class5  English
Class5  Maths
Class5  Physics
Class5  Chemistry
Class6  Tamil
Class6  English
Class6  Maths
Class6  Physics
Class6  Chemistry

期望的输出:

Missing Table(On file1)     Missing column(on file1)    Missing table(on file2)   Missing column(on file2)
-------------------------------------------------------------------------------------------------------------------
class6                                Physics                   
                                                          class7                   Tamil
                                                          class7                   English
                                                          class7                   Maths
                                                          class7                   Physics
                                                          class7                   Chemistry

1 个答案:

答案 0 :(得分:0)

您可以使用Unix comm 命令。

在将文件传递到comm命令之前,您需要先对它们进行排序。

要使File1.csv中的行丢失,您必须执行类似的操作,

comm -23 <(sort File2.csv | uniq) <(sort File1.csv | uniq)

要使File2.csv中的行丢失,您必须执行以下操作

comm -23 <(sort File1.csv | uniq) <(sort File2.csv | uniq)