我有一个带有字符串列的CSV文件,该列跨越多行。我想把这些多行合并成一行。
例如
1, "asdsdsdsds", "John"
2, "dfdhifdkinf
dfjdfgkdnjgknkdjgndkng
dkfdkjfnjdnf", "Roy"
3, "dfjfdkgjfgn", "Rahul"我希望我的输出是
1, "asdsdsdsds", "John"
2, "dfdhifdkinf dfjdfgkdnjgknkdjgndkng dkfdkjfnjdnf", "Roy"
3, "dfjfdkgjfgn", "Rahul"我想要使用PowerShell实现这个输出
谢谢。
发布于 2013-09-04 17:55:10
试试这个:
$csv = 'C:\path\to\your.csv'
(Import-Csv $csv -Header 'ID','Value','Name') | % {
$_.Value = $_.Value -replace "`r`n",' '
$_
} | Export-Csv $csv -NoTypeInformation如果您的CSV包含标头,请从导入中删除-Header 'ID','Value','Name'并用实际的列名替换Value。
如果您不想在字段中使用双引号,可以通过用如下所示替换Export-Csv来删除它们:
... | ConvertTo-Csv -NoTypeInformation | % { $_ -replace '"' } | Out-File $csv要从输出中删除标头,在Out-File之前添加另一个筛选器以跳过第一行:
... | select -Skip 1 | Out-File $csv发布于 2014-03-24 00:30:56
在Ansgar回答的基础上,下面是如何在以下情况下:
发布于 2013-09-04 17:37:41
您可以导入csv,进行专门的选择,并将结果写入新的CSV。
import-csv Before.csv -Header "ID","Change" | Select ID,@{Name="NoNewLines", Expression={$_.Change -replace "`n"," "}} | export-csv After.csv关键部分在select语句中,它允许您传递一个专用哈希表(Name是属性的名称,表达式是计算它的脚本块)。
您可能需要稍微修改标题才能得到所需的准确输出。
https://stackoverflow.com/questions/18619939
复制相似问题