Regex Powershell:基于两列比较两个文件
早上好,来自德国,很抱歉我的英语不好 我希望有人能帮助我 我们必须将2.xls或.csv文档与4000多行进行比较。 两份文件的E列具有相同的交货通知单编号。 此送货单编号不是唯一的,该编号可在E列中多次使用。 每个交货通知单编号在D列中也有若干件 如果两个文件中的交货通知单编号和数量匹配,我们可以忽略并删除该行。 比较两个超过4000行的文件非常昂贵,因此我希望可以使用Powershell正则表达式进行比较 我的想法是: 将xls转换为csv并执行以下操作: 阅读行并使用E列和D列的条目。对于E列的每个条目,检查第二个文件中是否存在此条目。如果条目存在,请检查D列是否与文件1中的相同。 如果两个入口都匹配,请删除或复制两个文件中的两行 至少我们有两份没有任务的文件 这可能吗 使用PowerShell我可以很好地处理,但是使用正则表达式。。。 :/ 提前谢谢Regex Powershell:基于两列比较两个文件,regex,powershell,Regex,Powershell,早上好,来自德国,很抱歉我的英语不好 我希望有人能帮助我 我们必须将2.xls或.csv文档与4000多行进行比较。 两份文件的E列具有相同的交货通知单编号。 此送货单编号不是唯一的,该编号可在E列中多次使用。 每个交货通知单编号在D列中也有若干件 如果两个文件中的交货通知单编号和数量匹配,我们可以忽略并删除该行。 比较两个超过4000行的文件非常昂贵,因此我希望可以使用Powershell正则表达式进行比较 我的想法是: 将xls转换为csv并执行以下操作: 阅读行并使用E列和D列的条目。对于
Daniel如果你把你的两个值看作一个复合主键,它似乎是可行的。您说过E列中的第一个值不一定是唯一的。你能告诉我,如果和数量结合起来,它是否总是独一无二的吗 无论如何,我建议,为了处理这个问题,为了得到(列E,列D)组合的唯一列表,你甚至可以只取一个“E,D”格式的字符串,只要列E和列D不包含逗号。获取此唯一值后,将其放入哈希表中,格式化值作为键,该键的文件数组作为值
现在您有了一种方法,可以高效地查找E、D列组合中存在的文件,因此您应该能够根据需要处理特定的用例。4000行听起来不多。试试这个:假设csv文件被称为“1.csv”和“2.csv”
“3.diff.csv”将只包含唯一的记录 谢谢你的帖子,不,它不是独一无二的。具有相同内容的多个值是可能的!例如:我们的送货单编号为453535,数量为30件。有可能我们又有同样的订单了。你怎么知道那个订单已经完成了?对不起,我觉得太复杂了。否则我们将不得不解决这个问题。可能地有Excel和大量的手工工作。对不起,我还记得双方的金额有正负之差。数量是相同的,在文件1中上升,在文件2中下降。谢谢很抱歉迟了回复!这个想法是好的,但不幸的是不适合我的目的,因为amound不同于符号-或+。
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