首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell:基于2列比较2个文件

Powershell:基于2列比较2个文件
EN

Stack Overflow用户
提问于 2013-02-28 16:41:20
回答 2查看 713关注 0票数 0

早上好,来自德国,为我糟糕的英语感到抱歉。

我希望有人能帮助我。

我们必须比较2个超过4000行的.xls或.csv文档。这两个文档都有一个E列,其中包含相同的交货单编号。此交货单编号不是唯一的,该编号可以在E列中多次使用。每个交货单编号在D列中也有一个件数。

如果两个文件中的交货单编号和数量匹配,我们可以忽略并删除该行。比较超过4000行的两个文件是非常昂贵的,所以我希望用Powershell比较一个正则表达式是可能的。

我的想法是:将xls转换为csv,然后执行以下操作:读取各行,并使用E列和D列的条目。如果该条目存在,请检查列D是否与file1中的相同。如果两个条目都匹配,则删除或复制两个文件中的两行。

至少我们有两个没有赋值的带有条目的文档。

这个是可能的吗?

使用PowerShell我可以很好地处理,但是使用正则表达式...:/

先谢谢你,丹尼尔

EN

回答 2

Stack Overflow用户

发布于 2013-02-28 18:57:03

如果你把你的两个值看作一个复合主键,这似乎是可行的。您说E列中的第一个值不一定是唯一的。你能告诉我,当它的数量结合起来时,它是不是总是唯一的?

无论如何,我建议,为了得到一个唯一的(Col,could )组合列表,你甚至可以接受一个"E,D“格式的字符串,只要col和could不包含逗号。获得这个唯一值之后,将其放入一个哈希表中,将格式化后的值作为键,并将该键的文件数组作为值。

现在,您已经有了一种方法,可以高效地查找存在于E列和D列组合的哪些文件,因此您应该能够根据需要处理特定的用例。

票数 0
EN

Stack Overflow用户

发布于 2013-02-28 20:07:26

4000行听起来并不多。试试这个:假设csv文件名为"1.csv“和"2.csv”

代码语言:javascript
复制
add-content 3.csv (get-content 1.csv) 
add-content 3.csv (get-content 2.csv) 

import-csv -header A,B,C,D,E,F 3.csv  | 
    group E,D | 
    where { $_.count -eq 1 } | 
    foreach { $_.group } |
    export-csv 3.diff.csv -noTypeInformation

"3.diff.csv“将只包含唯一记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15131001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档