如何比较powershell中的2个CSV文件

时间:2018-04-20 10:21:42

标签: powershell csv opencsv export-csv

我试图将2个CSV文件与日志信息进行比较(logs_all,logs_new) 格式:

enter image description here

我想在logs_new

中添加他们不存在于logs_all中的行
$csv1 = Import-Csv $csvLogs_all -Delimiter "`t"
$csv2 = Import-Csv $csvLogs_new -Delimiter "`t"

$end     = $csv1.Count
$count   = 0
$diffobj = @()

# testtable is the name of the column, adjust it to your column header name
if($csv1.time[$count] -ne $csv2.time){
   $diffobj += $csv2[$count]
}

$count++
}until($count -eq $end)
Write-Host "chekking logs"
$diffobj | export-csv $csvLogs_all -NoTypeInformation

但这不是很好,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

查看Compare-Object cmdlet。

cmdlet执行以下操作:

  

Compare-Object cmdlet会比较两组对象。一套   对象是“参考集”,另一组是“差异   集“。

     

比较结果表明是否属性值   仅出现在参考集的对象中(由...表示)   <=符号),仅在差异集中的对象中(由...表示)   =>符号)或者,如果指定了IncludeEqual参数,则两者都有   对象(由==符号表示)。

换句话说,它会比较两个对象并告诉你差异。

要比较两个可以运行的CSV文件

$file1 = import-csv -Path "C:\temp\Test1.csv" 
$file2 = import-csv -Path "C:\temp\Test2.csv" 
Compare-Object $file1 $file2 -property ColumnName -IncludeEqual