Как сравнить 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