比较csv文件时的Powershell帮助

比较csv文件时的Powershell帮助,powershell,Powershell,我有两个csv文件(一个参考文件和一个新记录文件)。Compare对象无法帮助我解决csv文件的问题,尽管重叠的数据格式不同 例如:从Excel导出的引用文件本身有1000条记录 "date","account","description","amount" "1/29/2013","Chase1","Kohl's"," $(32.05)" "1/31/2013","Chase1","Target"," $(65.29)" 新的记录文件基于chase或其他银行网站上的csv下载,更加普通,如下

我有两个csv文件(一个参考文件和一个新记录文件)。Compare对象无法帮助我解决csv文件的问题,尽管重叠的数据格式不同

例如:从Excel导出的引用文件本身有1000条记录

"date","account","description","amount"
"1/29/2013","Chase1","Kohl's"," $(32.05)"
"1/31/2013","Chase1","Target"," $(65.29)"
新的记录文件基于chase或其他银行网站上的csv下载,更加普通,如下所示

date,account,description,amount
1/31/2013,Chase1,Target,-65.29
是否有人提供一些代码,允许新的_记录文件中的这一行与参考文件中的第二行匹配。基本上需要能够导入csv,但在将参考文件发送到任何比较器(如compare object)或自定义函数之前忽略其中的格式设置

我对正在创建的多个中间文件、效率低下的for循环或使用compare对象等持开放态度

更新 尽管有这么多评论,我没有一个有效的解决方案。需要代码帮助从csv文件中去除货币格式,并与没有此格式的原始文件进行比较

刚刚测试过

$file1 = import-csv -Path "C:\deleted.csv" 
$file2 = import-csv -Path "C:\deleted2.csv" 
Compare-Object $file1 $file2 -property date,account,description,amount -IncludeEqual

File1
date,account,description,amount
1/31/2013,Chase1,Target,-65.29
1/31/2013,Chase1,Target,-32.05

File2
date, account , description , amount 
 1/29/2013 , Chase1 , Kohl's ,  $(32.05) 
 1/31/2013 , Chase1 , Target ,  $(65.29) 
明白了吗


如果删除引用文件中的所有引号和$(),是否会对您有所帮助?这里的最终目标是什么(而不仅仅是比较两条记录)?报告差异?创建新的组合记录集?@MartinBrandl感谢您的评论。这将是很难重新格式化的参考文件,因为这是一个导出从excel文件,我已经有5年了。它有数据透视表等等。我使用powershell将其导出到csv。我会说这很难做到。一个文件有一个负号表示负数,另一个文件将其括在括号中。您必须在导入时开发某种方法来解析此内容,以便它们匹配相同的类型。@MathiasR.Jessen问得好。最终目标是在新的_记录文件中找到真正的新记录,然后简单地将这些记录添加到参考文件中。正如你所能想象的,当你下载银行交易时,很难指定截止日期,然后仔细研究,找出你上次是什么时候做的。最好现在就获得银行提供的所有服务,并与您之前所做的工作进行比较,然后导入其余的服务。谢谢。这是我执行这项任务时得到的。基本上,记录显示为不同的。“日期”、“账户”、“说明”、“金额”、“侧指标”、“2013年1月29日”、“账户”、“说明”、“金额”、“侧指标”、“2013年1月31日”、“账户1”、“目标”、“65.29”、“2013年1月31日”、“账户1”、“目标”、“65.29”、“日期”、“账户”、“说明”、“金额”、“侧指标”、“2013年1月29日”、“账户1”、“目标”、“32.05”、“2013年1月31日”、“账户1”、“目标”、“65.29”、“金额”、“侧指标”、“2013年1月29日”、“32.05”、“2013年1月31日”“2013年1月31日”,“追逐1”,“目标”,“65.29”,“伙计们,我还没有一个有效的解决方案。”。任何人都能提供。非常感谢。