早上好,来自德国,为我糟糕的英语感到抱歉。
我希望有人能帮助我。
我们必须比较2个超过4000行的.xls或.csv文档。这两个文档都有一个E列,其中包含相同的交货单编号。此交货单编号不是唯一的,该编号可以在E列中多次使用。每个交货单编号在D列中也有一个件数。
如果两个文件中的交货单编号和数量匹配,我们可以忽略并删除该行。比较超过4000行的两个文件是非常昂贵的,所以我希望用Powershell比较一个正则表达式是可能的。
我的想法是:将xls转换为csv,然后执行以下操作:读取各行,并使用E列和D列的条目。如果该条目存在,请检查列D是否与file1中的相同。如果两个条目都匹配,则删除或复制两个文件中的两行。
至少我们有两个没有赋值的带有条目的文档。
这个是可能的吗?
使用PowerShell我可以很好地处理,但是使用正则表达式...:/
先谢谢你,丹尼尔
发布于 2013-02-28 18:57:03
如果你把你的两个值看作一个复合主键,这似乎是可行的。您说E列中的第一个值不一定是唯一的。你能告诉我,当它的数量结合起来时,它是不是总是唯一的?
无论如何,我建议,为了得到一个唯一的(Col,could )组合列表,你甚至可以接受一个"E,D“格式的字符串,只要col和could不包含逗号。获得这个唯一值之后,将其放入一个哈希表中,将格式化后的值作为键,并将该键的文件数组作为值。
现在,您已经有了一种方法,可以高效地查找存在于E列和D列组合的哪些文件,因此您应该能够根据需要处理特定的用例。
发布于 2013-02-28 20:07:26
4000行听起来并不多。试试这个:假设csv文件名为"1.csv“和"2.csv”
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“将只包含唯一记录。
https://stackoverflow.com/questions/15131001
复制相似问题