linux - 比较两个 csv 文件并将缺失的数据写入单独的 csv

标签 linux shell csv awk

请帮助我处理 awk 场景

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

文件.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

最佳答案

您可以使用 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)

关于linux - 比较两个 csv 文件并将缺失的数据写入单独的 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54899266/

相关文章:

python - 将 csv 内容写入 .txt 文件,每行一个文件?

csv - 使用Logstash选择性解析CSV文件

linux - 是否存在与可执行文件无关的UNIX/Linux进程

linux - Errr 'mongo.js:L112 Error: couldn' t 连接到服务器 127.0.0.1 :27017 at src/mongo/shell/mongo. js:L112'

嵌入式 Linux 中的缓存和非缓存内存访问

linux - 将一个 shell 脚本变量传递给另一个 shell 脚本

ios - 使用 Shell 脚本显示 UILabel 中的总代码行数

linux - 使用命令行参数Bash更改文件名

csv - 如何使用VB6写入CSV文件

linux - 如何使用 bash 脚本在不同的文件夹中运行可执行文件?