【发布时间】:2018-06-11 14:46:04
【问题描述】:
我每天下载一个.csv 文件,在将它用于其他软件之前,我需要对其进行一些清理。
该文件包含有关在餐馆进行的控制的数据,其中新的控制会导致文件中出现新的一行,这意味着每家餐馆可以有多个条目 - 我只需要最新的。
这是.csv 文件的一部分(仅包含其中的 4 列):
标题
orgnummer;navn;dato;total_karakter
4 个随机行
985129576;Økern Sushi;21092016;1
785423684;Å cafe;09072017;2
458792365;Varangerkroa;01012018;0
985129576;Økern Sushi;05052018;0
orgnummer 和 navn 对于每家餐厅都是独一无二的。
在我的示例中,脚本应该删除 Økern Sushi 的顶部条目。
到目前为止我的脚本:
$temp = Import-Csv 'C:\Users\Downloads\tilsynPS.csv' -Delimiter ';'
#change date format to desired format
foreach($row in $temp) {
$year = $row.dato.Substring($row.dato.Length - 4, 4)
$month = $row.dato.Substring($row.dato.Length - 6, 2)
$day = $row.dato.Substring(0, $row.dato.Length - 6)
$date = New-Object System.DateTime $year,$month,$day
$row.dato = $date
}
#Here's my attempt at sorting and deleting old records:
sort orgnummer, dato -Descending
$temp[0]
for ($i=1; $i -le $temp.length -1; $i++) {
if ($temp[$i]."orgnummer" -eq $temp[$i-1]."orgnummer"){
continue
}
else {$temp[$i]}
}
#export to csv
$temp | Export-Csv -Encoding UTF8 -NoTypeInformation -path C:\Users\Downloads\tilsynPS_redigert.csv
也试过这个版本的代码:
sort -Property @{Expression="dato";Descending=$true},
@{Expression="navn";Descending=$false}
$temp[0]
for ($i=1; $i -le $temp.length -1; $i++) {
if ($temp[$i]."navn" -eq $temp[$i-1]."navn"){
continue
}
else {$temp[$i]}
}
这是我在 PowerShell 中的第一个脚本,非常感谢任何帮助。已经注意到类似的问题,但在我正在使用的 PowerShell 中都没有。
【问题讨论】:
标签: powershell csv