【发布时间】:2021-03-02 21:11:32
【问题描述】:
我有两个不同记录的 CSV 文件。如果匹配,我必须将 file1 的第 1 列与 file2 的第 1 列进行比较,然后仅打印 file2 中第 2 列不匹配的那些行。 需要帮助才能使用 Unix 命令执行此操作。
【问题讨论】:
-
你能举一些例子数据吗?
-
请edit您的问题并添加示例输入文件和预期输出。将输入和输出数据格式化为代码块。
我有两个不同记录的 CSV 文件。如果匹配,我必须将 file1 的第 1 列与 file2 的第 1 列进行比较,然后仅打印 file2 中第 2 列不匹配的那些行。 需要帮助才能使用 Unix 命令执行此操作。
【问题讨论】:
没有示例数据很难发布解决方案,但您可以尝试以下 awk 示例:
awk -F, 'NR==FNR { map[$2]=1;next } { if (map[$2]!=1) { print } }' file1.csv file2.csv
使用 -F 将字段分隔符设置为逗号。首先处理第一个文件(NR==FNR),创建一个名为 map 的数组,其中第二个逗号分隔字段作为索引。然后在处理第二个文件时,如果map中没有第二个字段的条目,则打印该行。
【讨论】: