Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell:删除两个CSV文件之间的旧记录和重复记录_Powershell_Csv - Fatal编程技术网

Powershell:删除两个CSV文件之间的旧记录和重复记录

Powershell:删除两个CSV文件之间的旧记录和重复记录,powershell,csv,Powershell,Csv,新手进入Powershell,需要帮助才能完成任务 我有两个csv文件。旧的.csv和新的.csv 两者都有相同的结构(A到Z列),每个记录都有一个唯一的标识符,即F列(第六列)中的数字。在这两个CSV之间有一些重复记录 我正在寻找一种方法来消除旧的.csv中的记录,从新的.csv和输出到具有相同结构的新文件,因此新的output.csv实际上只包含新的记录 实现这一目标的好方法是什么 感谢您的帮助!提前谢谢 old.csv id,content 1, foo 2, bar new.csv i

新手进入Powershell,需要帮助才能完成任务

我有两个csv文件。旧的.csv和新的.csv

两者都有相同的结构(A到Z列),每个记录都有一个唯一的标识符,即F列(第六列)中的数字。在这两个CSV之间有一些重复记录

我正在寻找一种方法来消除旧的.csv中的记录,从新的.csv和输出到具有相同结构的新文件,因此新的output.csv实际上只包含新的记录

实现这一目标的好方法是什么

感谢您的帮助!提前谢谢

old.csv

id,content
1, foo
2, bar
new.csv

id,content
1, foo
2, bar
3, new item
4, new item
5, new item
命令:

$old = Import-Csv C:\Users\amewald\Downloads\old.csv
$new = Import-Csv C:\Users\amewald\Downloads\new.csv

# Diff IDs field in old.csv and new.csv -> additional fields of new.csv are shown via "=>"
$newEntriesOfNewCsv = Compare-Object -ReferenceObject $old.id -DifferenceObject $new.id | ? { $_.SideIndicator -eq "=>" } | select -ExpandProperty InputObject

# Get the rows from new.csv
$newCsvEntries = $new | ? { $row = $_; $newEntriesOfNewCsv.Where({ $_ -eq $row.id})}

# Create result csv file
$newCsvEntries | ConvertTo-Csv -NoTypeInformation | out-file result.csv

希望这对您有所帮助

虽然我相信这是可能的,但Powershell可能是一个错误的工具,它使您的工作更加困难。我希望像Python这样的东西会擅长这一点。