【问题标题】:How to compare 2 CSV files in powershell如何在powershell中比较2个CSV文件
【发布时间】:2018-10-01 00:59:17
【问题描述】:

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

我想从 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

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

【问题讨论】:

    标签: powershell csv opencsv export-csv


    【解决方案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
    

    【讨论】:

    • 谢谢!以及如何将差异添加到 file1?
    • 您可以使用Add-Content cmdlet 将内容添加到文件中。例如。如果要将结果添加到$file1,只需运行Compare-Object $file1 $file2 -property ColumnName -IncludeEqual | Add-Content $file1
    • 如果我运行这个我得到一个错误:添加内容:找不到驱动器。名称为“@{time=19/04/2018 12”的驱动器不存在。在 line:1 char:71 + ... $file1 $file2 -property ColumnName -IncludeEqual |添加内容 $file1
    • 我的错,我认为$file1 包含文件名。改写Add-Content -Path "name_of_your_file.txt"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2019-01-19
    • 1970-01-01
    • 2021-11-09
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多