删除重复的行并保留最新的条目

时间:2018-06-11 14:46:05

标签: powershell csv

我每天下载一个.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
每个餐厅的

orgnummernavn都是唯一的。

在我的示例中,脚本应删除ØkernSushi的顶部条目。

到目前为止我的脚本:

$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

删除旧记录的尝试基于以下帖子:http://community.idera.com/powershell/ask_the_experts/f/powershell_for_windows-12/8073/csv-remove-unique-records-based-on-columns-and-last-date

还试过这个版本的代码:

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中没有一个是我在这里工作的。

1 个答案:

答案 0 :(得分:1)

我觉得你差不多了。此解决方案将结果累积到一个新数组中并导出。只有当orgnummer不同或者它们持有的日期更新时才会添加行。

请注意,对于测试,我必须更改导入和导出文件的路径。

<asp:Panel ID="pnlMotivoRejeitarTitulo" runat="server" Width="610px">
    <asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>
            <asp:Button runat="server" ID="btnShowModalPopup2" Style="display: none" />
            <ajaxToolkit:ModalPopupExtender ID="modalRejeitarTitulo" runat="server" TargetControlID="btnShowModalPopup2"
                PopupControlID="divPopUp2" BackgroundCssClass="popUpStyle" PopupDragHandleControlID="panelDragHandle"
                DropShadow="true" RepositionMode="RepositionOnWindowResize" />
            <div class="popUpStyle" id="divPopUp2" style="display: none;">
                <div style="width: 600px; max-height: 160px;">
                    <asp:Panel runat="Server" ID="panel1" CssClass="drag01">
                        <asp:Label ID="lblTituloModal" runat="server" Text="EXCLUIR TÍTULO?"></asp:Label>
                        <br />
                    </asp:Panel>
                    <div class="subtitulo">
                        <asp:Label ID="lblMensagemOrigemAgregadoMiudo" runat="server" Text=""></asp:Label>
                    </div>
                    <br />
                    <asp:Panel ID="pnlRejeitarTitulo" runat="server" Width="550px" BackColor="#CCCCCC"
                        CssClass="centralizaPanel" BorderStyle="Outset">
                        <div style="padding-top: 10px;">
                            <div class="campo">
                                <div class="label_formulario8">
                                    <asp:Label ID="lblId" runat="server" Text="ID: "></asp:Label>
                                </div>
                                <asp:TextBox ID="txtId" runat="server" Width="100px" ReadOnly="true"></asp:TextBox>
                            </div>
                            <div class="campo">
                                <div class="label_formulario8">
                                    <asp:Label ID="Label3" runat="server" Text="Descrição: "></asp:Label>
                                </div>
                                <asp:TextBox ID="txtDescricao" runat="server" Width="300px"></asp:TextBox>
                            </div>
                            <br />
                        </div>
                        <div class="centraliza_botao">
                            <asp:Button ID="btnConfirmarExcluirTitulo" runat="server" Text="Confirmar" CssClass="btn btn-primary" OnClick="btnConfirmarExcluirTitulo_Click"
                                Style="height: 31px" CausesValidation="false" />
                            <asp:Button ID="btnFecharExcluirTitulo" runat="server" Text="Fechar" CssClass="btn btn-warning"
                                Style="height: 31px" CausesValidation="false" OnClick="btnFecharExcluirTitulo_Click" />
                        </div>
                        <br />
                    </asp:Panel>
                </div>
                <br />
                <br />
            </div>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Panel>