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



我有一个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
}

您可以使用计算的属性来扩展现有的数据集

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

您可以使用这个根据这个答案改编的漂亮正则表达式来捕获该列上的Guid,并使用Select-Object:的计算属性创建一个新列

$re = [regex] '(?i)[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}'
Import-CSV pathtomyCsv.csv | Select-Object *, @{
Name       = 'Modified_Id'
Expression = { $re.Match($_.Exported_Id).Value }
} | Export-Csv pathtotheNewCsv.csv -NoTypeInformation

最新更新