我想在第五个逗号之前添加“在第三个逗号之后”。怎样才能在powershell中完成?
我的想法是使用正则表达式函数来查找第三个和第五个逗号的位置,然后通过
添加“$s.Insert(4,'-') **In case reg return position 4
示例数据
04642583,3,HC Mobile,O213,Inc,SIS Services,KR,Non Payroll Relevant,KR50
输出
04642583,3,HC Mobile,"O213,Inc",SIS Services,KR,Non Payroll Relevant,KR50
这是我试过的代码,但它失败了'不允许空管元素'如何修复
$source = "D:\Output\MoreComma.csv"
$FinalFile = "D:\Output\MoreComma_Corrected.csv"
$content = Get-Content $source
foreach ($line in $content)
{
$items = $line.split(',');
$items[3] = '"'+$items[3]
$items[4] = $items[4]+'"';
$items -join ','
} | Set-Content $FinalFile
答案 0 :(得分:1)
如果您知道格式(例如,您知道它总是以逗号分隔的方式);而你只是想要实现这个目标;你可以简单地拆分线,添加引号并再次加入线。
示例:
$data = "04642583,3,HC Mobile,O213,Inc,SIS Services,KR,Non Payroll Relevant,KR50";
$items = $data.split(',');
$items[3] = '"'+$items[3]
$items[4] = $items[4]+'"';
$items -join ','
这将产生一行:
04642583,3,HC Mobile,"O213,Inc",SIS Services,KR,Non Payroll Relevant,KR50
鉴于您已将其存储在CSV文件中:
$file = "C:\tmp\test.csv";
$lines = (get-content $file);
$newLines=($lines|foreach-object {
$items = $_.split(',');
$items[3] = '"'+$items[3]
$items[4] = $items[4]+'"';
$items -join ','
})
如果需要,您可以在新文件中输出结果
$newLines|Set-content C:\tmp\test2.csv
这会“混乱”你的CSV格式文件(因为它会考虑“合并列”),但我猜这是你想要实现的目标?