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

如何使用PowerShell将|替换为逗号,解决替换异常以正确保存为CSV

PowerShell将竖线分隔文本转为CSV的实现方法

异常原因

使用-replace出现逐字符插入逗号的问题,根源是-replace运算符默认采用正则匹配规则,|是正则语法中代表「或」逻辑的特殊元字符,未做转义处理时,匹配规则会识别所有空字符位置,最终导致逗号被插入到每两个相邻字符之间。

可用实现方案

方案1:正则模式下转义特殊字符

继续使用-replace时,对|做正则转义即可:在字符前加反斜杠\,也可以调用[regex]::Escape()方法自动处理特殊字符转义。
完整操作代码:

# 读取原始竖线分隔文本,将路径替换为实际文件路径
$rawText = Get-Content -Path "源文件路径.txt" -Raw
# 转义竖线后执行替换
$csvText = $rawText -replace '\|', ','
# 保存为UTF8编码的CSV文件
$csvText | Set-Content -Path "输出结果.csv" -Encoding UTF8

针对给出的示例文本,执行后输出的CSV内容为:

CF Hi,Cap Launch,Sales To
CF Hi,Cap Launch,Sales To,Systems

方案2:使用字面量替换方法(无需处理转义)

如果不想处理正则转义逻辑,可以直接调用.NET字符串类型自带的.Replace()方法,该方法为纯字面量匹配,不会识别任何正则特殊字符,写法更直接:

$rawText = Get-Content -Path "源文件路径.txt" -Raw
$csvText = $rawText.Replace('|', ',')
$csvText | Set-Content -Path "输出结果.csv" -Encoding UTF8

注意:以上简单替换方案仅适用于原始文本本身不包含逗号的场景。如果原文本字段内存在逗号,直接替换会导致CSV列错位,需要额外给包含特殊字符的字段包裹双引号做合规转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:42:22