【发布时间】:2019-05-15 10:43:45
【问题描述】:
我有两张 Excel 表格(表格 A 和表格 B),我需要将表格 A 中的一列与表格 B 进行比较并打印差异。
工作表A
Account Number | Status
----------------|-------------
876251251 | Not Active
716126181 | Not Active
888281211 | Not Active
666615211 | Not Active
787878787 | Not Active
111212134 | Not Active
工作表B
Customer Number
----------------
876251251
716126181
792342108
792332668
666615211
760332429
791952441
676702288
我需要将“帐号”与“客户编号”进行比较。
-
sheetA中的所有帐号都应该出现在sheetB的客户编号中,如果 sheetB 缺少任何“帐号”,那么我们应该打印出这些信息。 - 还有
sheetB中所有那些在sheetA帐号中不存在的额外客户编号,我也想打印出来。
我正在阅读有关 awk 的信息,我认为我们可以使用 awk 但不明白该怎么做?
$ awk -F'|' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' sheetB sheetA
输出应该是:
Account Number:
888281211
787878787
111212134
CustomerNumber:
792342108
792332668
760332429
791952441
676702288
【问题讨论】:
-
您的预期结果是什么?可以发帖吗?
-
答案不够,但我的 2 美分: 1. 现代 Excel 文件格式,后缀为 .xlsx,是基于 xml 的,因此可以使用 xml_grep 之类的工具进行解析。要获得更复杂的结果,您可能需要使用 Perl 或其他带有 XML 插件的脚本语言。 2. 如果你能得到一个 CSV 输出,你可能能够使用传统的 *nix 工具 awk、sed 和 bash 来解析它。
-
@Kalanidhi 用输出更新了我的问题
-
"比较两个 Excel 工作表" - 您不能对 Excel
.xls文件使用文本处理(您必须先将它们转储为文本或 .csv)Excel 文件格式比你在屏幕上看到的要多得多。 (尝试在记事本中打开 excel 文件,看看里面有什么——哎哟!) -
此问题的标记已关闭。它与所有给定的标签类别无关。
标签: linux shell perl text-processing