Как сравнить 2 CSV-файла в powershell

Я пытаюсь сравнить 2 файла CSV с информацией о журналах в формате (logs_all, logs_new):

введите описание изображения здесь

Я хочу добавить строки, которых они не существуют в logs_all из logs_new

$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 ответ

Решение

Посмотрите на командлет Compare-Object.

Командлет выполняет следующие действия:

Compare-Object Командлет сравнивает два набора объектов. Один набор объектов - это "набор ссылок", а другой набор - "набор различий".

Результат сравнения показывает, появилось ли значение свойства только в объекте из набора ссылок (обозначенного <= символ), только в объекте из набора разностей (обозначается => символ) или, если 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
Другие вопросы по тегам