Powershell:删除旧记录并在两个CSV文件之间复制

时间:2017-02-28 19:57:38

标签: powershell csv

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

我有两个csv文件。 old.csv和new.csv

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

我正在寻找一种方法来消除old.csv中的记录,从new.csv和输出到具有相同结构的新文件,所以新的output.csv只有新的记录。

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

任何帮助表示赞赏!提前谢谢!

1 个答案:

答案 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

希望有所帮助