不同结构的CSV比较
我正在尝试编写用于比较两个具有不同结构的CSV文件的脚本。我有一个文件名为不同结构的CSV比较,csv,powershell,compare,Csv,Powershell,Compare,我正在尝试编写用于比较两个具有不同结构的CSV文件的脚本。我有一个文件名为cisearch.csv,第二个文件名为export.csv cisearch.csv: Name,P1,P2,P3,P4,P5 server1,100,,,, server2,100,100,,, server3,100,,,, server4,100,50,70,80,80 Host;Drive server1;Drive C: Disk Usage server2;Drive C: Disk Usage server
cisearch.csv
,第二个文件名为export.csv
cisearch.csv
:
Name,P1,P2,P3,P4,P5
server1,100,,,,
server2,100,100,,,
server3,100,,,,
server4,100,50,70,80,80
Host;Drive
server1;Drive C: Disk Usage
server2;Drive C: Disk Usage
server2;Drive D: Disk Usage
server3;Drive C: Disk Usage
server4;Drive C: Disk Usage
server4;Drive D: Disk Usage
server4;Drive E: Disk Usage
server4;Drive F: Disk Usage
server4;Drive G: Disk Usage
从脚本中,我只需要输出,其中只有cisearch.csv
上的项,而不是export.csv
中的项。例如:
server4 Drive F:
server4 Drive G:
那么:
function compareE {
if ($eDrive -gt 0 ) {
Select-String -pattern "$hostname;Drive E: Disk Usage" C:\workspace\NagiosExport.csv
}else{
Write-Host Drive E: on $hostname not monitored
}
}
if($eDrive -gt 0) {
compareE
}
我不清楚你的选择标准是什么。驱动器的数量(假设第一个CSV中的
P1
到P5
字段代表驱动器)在两个文件中是相同的,那么为什么必须列出server4的驱动器F:和G:而其他驱动器不是?cisearch.CSV是来自CMDB的报告:P1-P5是添加到服务器的分区-server1只有一个驱动器,server2有两个分区,server3只有一个,server4有5个分区。我需要把它和Nagios的第二个文件进行比较,这是监控的内容。我需要找到P1-P5和服务器名称中未监视的内容…我想,我需要:如果dDrive为空-无效值,请继续eDrive。。。如果dDrive的值大于0,请尝试选择字符串…请解释(在您的问题中)如何从两个输入文件到概述的输出(否则请更正您的示例)。我完全不清楚你的标准是什么。这如何回答你的问题?如果您需要提供其他信息/澄清:请编辑您的问题。
function compareE {
if ($eDrive -gt 0 ) {
Select-String -pattern "$hostname;Drive E: Disk Usage" C:\workspace\NagiosExport.csv
}else{
Write-Host Drive E: on $hostname not monitored
}
}
if($eDrive -gt 0) {
compareE
}