【问题标题】:How to update a content or row of data values in a csv file with PowerShell?如何使用 PowerShell 更新 csv 文件中的内容或数据值行?
【发布时间】:2020-06-12 13:18:01
【问题描述】:

我需要更新.csv 文件而不添加任何额外的行或新行,因此我只需要更新单行数据。输入数据是行的形式,我正在使用foreach循环。

请帮忙指导一下。

【问题讨论】:

    标签: arrays powershell export-to-csv


    【解决方案1】:

    我会逐步使用ForEach 并遍历每一行,更改需要更改的行,然后创建一个新的输出文件。

    想象一个像这样的.csv

    Animal,Name,Age Cat,Finnegan,3 Cat,Pippin,5 Dog,Fido,2 Lizard,Draco,1

    假设我想将动物类型从蜥蜴更改为猫。

    $csv = import-csv C:\Path\To\Your.csv
    $outputFile = New-Object System.Collections.ArrayList
    ForEach($row in $csv){
        If ("Lizard" -eq $row.Animal){
            Write-Output "Changing Animal type for $($row.Name) from $($row.Animal) to 'Cat'"
            $row.Animal = 'Cat'
        }
        $outputFile.Add($row) | Out-Null
    }
    
    $outputFile | Export-Csv c:\Path\To\Updated.csv -NoTypeInformation
    

    这将为任何更改的行提供此输出:

    Changing Animal type for Draco from Lizard to 'Cat'
    

    您只需自定义它以满足您的需要。

    【讨论】:

    • 感谢您分享此信息。这很有帮助
    • 我可以根据需要进行自定义,但是当文件导出时,它会生成默认标题名称“H1”。尝试了 Import-Csv,但没有得到更新标题名称的预期结果。有什么建议吗?
    • 如果您的输入文件根本没有标题,您可以像这样指定它们。 import-csv c:\temp\t.csv -Header Animal,Dog,Cat。如果这对您有帮助,请记得标记为答案。
    猜你喜欢
    • 2023-03-29
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2019-01-09
    • 2017-10-21
    • 1970-01-01
    相关资源
    最近更新 更多