将 csv 的特定列与 shell 脚本中的 comm 进行比较

问题描述 投票:0回答:1

我有两个想要比较的 CSV 文件。第一个看起来像:

aaaaaaaa-fb34-4e3e-aed5-eec78d02d59b,1234
bbbbbbbb-f76a-4a05-bb53-63aba9d03fe2,5678
cccccccc-e351-4d8e-b44a-080f6ccdef7d,9012

第二个看起来像(只有一个字段):

bbbbbbbb-f76a-4a05-bb53-63aba9d03fe2
cccccccc-e351-4d8e-b44a-080f6ccdef7d

我想根据 UUID 比较(使用

comm
等 shell 命令)这两个集合,显示第一个文件中的完整行以及第二个文件中未出现的 UUID。 因此,对于示例数据如上所述,输出应该是

aaaaaaaa-fb34-4e3e-aed5-eec78d02d59b,1234
如果我只有两个 UUID 列表,我可以轻松地与 

comm

 进行比较,但我不知道如何处理额外的字段。我想我可以切断第二个字段,
comm
,然后循环遍历结果并在原始的双字段集中进行 grep,但这似乎有点低效。使用标准实用程序有更好的方法吗?我也看到了
这个问题,但这似乎丢弃了不常见的行/字段。

bash shell csv sh comm
1个回答
0
投票
在这种情况下你可以使用 grep:

$ grep -Fvf second.txt first.txt
和示例运行:

aaaaaaaa-fb34-4e3e-aed5-eec78d02d59b,1234
    
© www.soinside.com 2019 - 2024. All rights reserved.