新手进入Powershell,需要帮助才能完成任务!
我有两个csv文件。 old.csv和new.csv
两者都具有相同的结构(A到Z列),并且每个记录在列F(第六列)中具有唯一的标识符,该标识符是数字。在这两个CSV之间有一些重复记录。
我正在寻找一种方法来消除old.csv中的记录,从new.csv和输出到具有相同结构的新文件,所以新的output.csv只有新的记录。
实现这一目标的好方法是什么?
任何帮助表示赞赏!提前谢谢!
答案 0 :(得分:0)
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
希望有所帮助