如何使用PowerShell拆分csv并添加附加列

zsohkypk  于 2022-12-06  发布在  Shell
关注(0)|答案(2)|浏览(154)

我有一个csv文件,它有多个列。我有一个名为“Exported_Id”的特定列名,它看起来如下所示

f36b9decc73e40bfb9a6250198a83fc0/SharePoint/source_28D4CE4DFC53AABB34B41E17BE9DEBBC/item__6761c90b-c1e0-4a91-b72c-e044e5b8cc56_1.0

我只是想知道我怎么才能分裂到只有这个(分裂前后_)

6761c90b-c1e0-4a91-b72c-e044e5b8cc56

然后将其添加到名为“Modified_Id”新列中,并将其与现有列一起导出到新的csv文件中。
我有点困了,所以任何帮助或建议将是真的感谢。

$CSVImport = Import-CSV $Global:Advance_CSV
    foreach($CSVLine in $CSVImport){
         $CSVExportedID = $CSVLine.Exported_Id

         $Modified_Id= $CSVExportedID -split "__" 

         Select-Object $Modified_Id, "Modified_Id" | Export-Csv $ModifiedFile

    }
rur96b6h

rur96b6h1#

可以使用计算的特性扩展现有数据集

$Result=
foreach($CSVLine in $CSVImport){
    $CSVLine | 
        Select-Object -Property *,
            @{
                Name = 'Modified_Id'; 
                Expression = {($_.Exported_Id -split "_")[-2]}
            }
}
$Result |
    Format-Table -AutoSize
gc0ot86w

gc0ot86w2#

您可以使用从this answer改编而来的nice regex来捕获该列上的Guid,并使用calculated propertySelect-Object创建一个新列:

$re = [regex] '(?i)[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}'

Import-CSV path\to\myCsv.csv | Select-Object *, @{
    Name       = 'Modified_Id'
    Expression = { $re.Match($_.Exported_Id).Value }
} | Export-Csv path\to\theNewCsv.csv -NoTypeInformation

相关问题