You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell拆分CSV并添加Modified_Id列提取指定ID

问题描述

我有一个包含多列的CSV文件,其中存在名为Exported_Id的列,其值示例为:

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

需要从中拆分出中间的UUID部分(6761c90b-c1e0-4a91-b72c-e044e5b8cc56),将其添加到名为Modified_Id的新列中,并保留原有所有列导出为新的CSV文件。我尝试了以下PowerShell代码但遇到问题:

$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
}
解决方法

原代码存在三个核心问题:拆分逻辑未精准定位UUID、未保留原有列、循环内重复导出会覆盖文件。修正后的代码如下:

# 导入目标CSV文件
$CSVImport = Import-CSV $Global:Advance_CSV

# 批量处理每一行数据,添加新列
$processedData = $CSVImport | ForEach-Object {
    # 两次拆分提取UUID:先按__分割取第二部分,再按_分割取第一部分
    $uuid = ($_.Exported_Id -split "__")[1] -split "_" | Select-Object -First 1
    # 保留原有所有列,新增Modified_Id列并赋值UUID
    $_ | Select-Object *, @{Name='Modified_Id'; Expression={$uuid}}
}

# 将处理后的数据导出到新CSV文件
$processedData | Export-Csv -Path $ModifiedFile -NoTypeInformation

关键说明

  • 拆分逻辑:通过__分割后取索引为1的元素,再用_分割取首段,精准提取UUID
  • 列保留:Select-Object *确保原有所有列不丢失,通过计算属性@{Name='Modified_Id'; Expression={$uuid}}添加新列
  • 导出优化:一次性导出所有处理后的数据,避免循环内重复导出导致的文件覆盖问题,-NoTypeInformation参数可移除CSV开头的类型注释

内容的提问来源于stack exchange,提问作者aasenomad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:50:26